以下是我现阶段对模板方法模式的理解:
模板模式比较好理解,并且java.io.InputStream这个类使用了tempalte method 模式。
父类中定义抽象方法和模版,子类去实现方法。就像画板一样,你刻一个画板的模具,用铅笔涂鸦就是铅笔的效果,用彩笔涂鸦就是彩笔的效果。
但是无论那种效果,都是由模板指定好的图形来的。
public abstract class AbstractDisplay {
public abstract void begin();
public abstract void print();
public abstract void end();
//这个就是模版,执行流程在父类中被定义
public void display() {
begin();
for (int i = 0; i < 5; i++) {
print();
}
end();
}
}
public class CharDisplay extends AbstractDisplay {
private char aChar;
public CharDisplay(char aChar) {
this.aChar = aChar;
}
@Override
public void begin() {
System.out.println("<<");
}
@Override
public void print() {
System.out.println(aChar);
}
@Override
public void end() {
System.out.println(">>");
}
}
public class StringDisplay extends AbstractDisplay {
private String string;
public StringDisplay(String string) {
this.string = string;
}
@Override
public void begin() {
System.out.println("+----------+");
}
@Override
public void print() {
System.out.println("|" + string + "|");
}
@Override
public void end() {
System.out.println("+=========+");
}
}
public class Main {
public static void main(String[] args) {
AbstractDisplay abstractDisplay1 = new CharDisplay('H');
AbstractDisplay abstractDisplay2 = new StringDisplay("你好");
abstractDisplay1.display();
abstractDisplay2.display();
}
}