java中的模板方法模式

以下是我現階段對模板方法模式的理解:

模板模式比較好理解,並且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();
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章