23種設計模式(3):模版方法模式

模版方法就是父類定義一系列抽象方法,以及一個具體方法,具體方法是通過調用組合其內部抽象方法實現,而其內部抽象方法是有不同的實現子類來完成的,也即是模版類只指定大的實現框架,具體的實現有不同的子類實現,實例圖如下:


//AbstractDisplay實現display,內部實現細節有不同的子類實現
public abstract class AbstractDisplay{
	public abstract void open();//抽象方法
	public abstract void print();//抽象方法
	public abstract void close();//抽象方法
	public final void display(){//基於抽象方法基礎的具體實現方法
		open();
		for(int i = 0;i<5;i++)
		print();
		close();
	}
}

/*CharDisplay*/
public class CharDisplay extends AbstractDisplay{
	private char ch;
	public CharDisplay(char ch){
		this.ch = ch;
	}

	public void open(){
	System.out.print("<<");
	}

	public void print(){
	System.out.print(ch);
	}
	
	public void close(){
	System.out.print(">>");
	}
}
/*StringDisplay*/
public class StringDisplay extends AbstractDisplay{
private String string;
private int width;
public StringDisplay(String string){
this.string = string;
this.width = string.getBytes().length;
}

public void open(){
printLine();
}

public void print(){
System.out.println("|" +String+ "|");
}

public void close(){
printLine();
}

private void printLine(){
	System.out.print("+");
	for(int i = 0;i< width;i++)
	System.out.print("-");
	System.out.print("+");
}
}

public class Main{
public static void main(String[] args){
AbstractDisplay d1 = new CharDisplay("H");
AbstractDisplay d2 = new StringDisplay("Hello,word.");
AbstractDisplay d3 = new CharDisplay("你好。");
d1.display();
d2.display();
d3.display();
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章