模版方法就是父类定义一系列抽象方法,以及一个具体方法,具体方法是通过调用组合其内部抽象方法实现,而其内部抽象方法是有不同的实现子类来完成的,也即是模版类只指定大的实现框架,具体的实现有不同的子类实现,实例图如下:
//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();
}
}