设计模式之Template Method模式
作用:将具体的处理交给子类
什么是Template Method模式?
Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法。子类去实现父类中的抽象方法,即在子类种再进行对应的方法实现。
所以在父类中定义所需的框架,子类中去实现对应的方法,这就是Template Method模式。
UML类图:
总体框架:display种首先open方法,再调用5次print方法,再调用close方法(open、print、close均为抽象方法)
AbstractDisplay类:
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; privateint width; public StringDisplay(String string) { this.string = string; this.width = string.getBytes().length; } public void open() { printLine(); } public void print() { System.out.print("|"+string+"|"); } public void close() { printLine(); } private void printLine() { System.out.print("+"); for(int i=0;i<width;++i) System.out.print("-"); System.out.println("+"); } }
Main类:
public class Main(String[] argvs) { AbstractDisplay d1 = new CharDisplay('H'); AbstractDisplay d2 = new StringDisplay("Hello World"); d1.display(); d2.display(); }
作用:基类提供了实现的大体流程,但是每一步细节仍需要子类自行去实现