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