设计模式学习笔记(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();
        }
    }

 

 

posted @ 2013-12-15 18:52  adgkns  阅读(113)  评论(0编辑  收藏  举报