Define the skeleton of an algorithm in an operation, defer-ring some steps to subclasses. Template Method lets subclassesredefine certain steps of an algorithm without changing the al-gorithm's structure.(在父类中处理处理流程的框架,在子类中实现具体处理的模式称为模板方法模式)
类图:略
父类
public abstract class AbsstractDisplay {
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();
}
}
子类
public class CharDisplay extends AbsstractDisplay {
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.println(">>");
}
}
public class StringDisplay extends AbsstractDisplay {
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.println("+");
}
}
测试类
public class Test {
public static void main(String[] args) {
AbsstractDisplay display1=new CharDisplay('A');
AbsstractDisplay display2=new StringDisplay("模版方法模式");
AbsstractDisplay display3=new StringDisplay("So easy");
display1.display();
display2.display();
display3.display();
}
}
运行结果:
<<AAAAA>>
+------------------+
|模版方法模式|
|模版方法模式|
|模版方法模式|
|模版方法模式|
|模版方法模式|
+------------------+
+-------+
|So easy|
|So easy|
|So easy|
|So easy|
|So easy|
+-------+