2017年2月19日 星期日

模板 (Template) 模式

抽象父類別定義多個方法給子類實作,而最關鍵的是抽象父類別還有一支呼叫其他方法的方法,也就是將需要呼叫的方法,集中在一個方法裡


※父/子類別

public abstract class AbstractTemplate {
    protected abstract void method1();
    protected abstract void method2();
    protected abstract void method3();
    
    public void templateMethod() {
        this.method1();
        this.method2();
        this.method3();
    }
}
--------------------
public class Concrete1 extends AbstractTemplate {
    @Override
    protected void method1() {
        System.out.println("Concrete1 m1");
    }
    
    @Override
    protected void method2() {
        System.out.println("Concrete1 m2");
    }
    
    @Override
    protected void method3() {
        System.out.println("Concrete1 m3");
    }
}
--------------------
public class Concrete2 extends AbstractTemplate {
    @Override
    protected void method1() {
        System.out.println("Concrete2 m1");
    }
    
    @Override
    protected void method2() {
        System.out.println("Concrete2 m2");
    }
    
    @Override
    protected void method3() {
        System.out.println("Concrete2 m3");
    }
}




※測試

AbstractTemplate c1 = new Concrete1();
AbstractTemplate c2 = new Concrete2();
c1.templateMethod();
System.out.println();
c2.templateMethod();

※結果:
Concrete1 m1
Concrete1 m2
Concrete1 m3

Concrete2 m1
Concrete2 m2
Concrete2 m3

沒有留言:

張貼留言