模板方法差不多是Java設計模式中除單例之外的另一種非常簡單也是我們在寫程序時非常常用的一種方法了。以至於當你看到模板方法的設計模式時你會感覺到,這不是我在程序中經常用到的方法麼。
定義:定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類不可以改變一個算法的結構即可重定義該算法的某些特定步驟。
--------------------------------------分割線 --------------------------------------
編寫高質量代碼 改善Java程序的151個建議 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm
Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm
Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm
Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm
Java對象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm
--------------------------------------分割線 --------------------------------------
下面是我總結的模板方法中具體的代碼實現通用框架
1:抽象的模板類:
package template;
public abstract class AbstractClass {
protected abstract void method1();
protected abstract void method2();
public void templateedMethod(){
this.method1();
this.method2();
}
}
2:具體的模板類:
package template;
public class ConcretClass extends AbstractClass{
@Override
protected void method1() {
// TODO Auto-generated method stub
}
@Override
protected void method2() {
// TODO Auto-generated method stub
}
}
package template;
public class ConcretClass1 extends AbstractClass{
@Override
protected void method1() {
// TODO Auto-generated method stub
}
@Override
protected void method2() {
// TODO Auto-generated method stub
}
}
3:場景類:
package template;
public class Client {
public static void main(String[] args) {
AbstractClass class1 = new ConcretClass();
AbstractClass class2 = new ConcretClass1();
class1.templateedMethod();
class2.templateedMethod();
}
}
模板方法具有以下優點:
1:提取公共部分代碼易於維護。
2: 由父類控制,子類實現
3:封裝不可變部分,擴展可變部分