設計模式之模板模式
概述:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。
TemplateMethod使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
適用性:1.一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。
2.各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。
首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。
最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。
例子如下:模板類:
2.各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。
首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。
最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。
例子如下:模板類:
public abstract class Template {
public abstract void print();
public void update() {
System.out.println("公共的代碼");
System.out.println("下面是子類各自實現的代碼");
print();
}
}
模板類的子類:public abstract void print();
public void update() {
System.out.println("公共的代碼");
System.out.println("下面是子類各自實現的代碼");
print();
}
}
public class TemplateConcrete extends Template{
@Override
public void print() {
System.out.println("這是子類的實現");
}
}
測試類@Override
public void print() {
System.out.println("這是子類的實現");
}
}
public class Test {
public static void main(String[] args) {
Template temp = new TemplateConcrete();
temp.update();
}
}
public static void main(String[] args) {
Template temp = new TemplateConcrete();
temp.update();
}
}