设计模式学习笔记(3)-模板模式
模板模式主要适用于有一些确定的步骤,但细节不大一样的情况。
实现要点:
1.定义一个抽象类,定义几个抽象方法,定义模板方法供客户端使用。
2.定义一个子类继承模板抽象类,实现抽象方法。
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(); } } public class CharDisplay extends AbstractDisplay{ private char ch; public CharDisplay(char ch) { this.ch = ch; } @Override public void open() { System.out.print("<<"); } @Override public void print() { System.out.print(ch); } @Override public void close() { System.out.println(">>"); } } public class StringDisplay extends AbstractDisplay { private String name; public StringDisplay(String name) { this.name = name; } @Override public void open() { System.out.println("+-------------+"); } @Override public void print() { System.out.println("|" + name + "|"); } @Override public void close() { System.out.println("+-------------+"); } } public class Test { /** * @param args */ public static void main(String[] args) { AbstractDisplay display1 = new CharDisplay('S'); display1.display(); AbstractDisplay display2 = new StringDisplay("Hello, World"); display2.display(); } }
Junit中就有这种用法,用setUp, runTest(), tearDown()结构提供给用户写测试。
public abstract void setUp(); public abstract void runTest(); public abstract void tearDown(); public final void runBare() throws Throwable { setUp(); try { runTest(); } finally { tearDown(); } }