模板方法模式
定義:
定義一個(gè)操作中的算法骨架,而將一些步驟延伸到子類中去,使得子類可以不改變一個(gè)算法的結(jié)構(gòu),即可重新定義該算法的某些特定步驟。這里需要復(fù)用的是算法的結(jié)構(gòu),也是步驟,而步驟的實(shí)現(xiàn)可以在子類中完成;
構(gòu)成:
父類角色:提供模板;
子類角色:為模板提供實(shí)現(xiàn);
java代碼實(shí)現(xiàn):
public abstract class Template {
//定義執(zhí)行步驟,每個(gè)步驟的具體實(shí)現(xiàn)由子類完成
public void method() {
this.step1();
this.step2();
this.step3();
}
protected abstract void step1();
protected abstract void step2();
protected abstract void step3();
}
public class ConcreteTemplate extends Template {
@Override
protected void step1() {
System.out.println("ConcreteTemplate.step1()");
}
@Override
protected void step2() {
System.out.println("ConcreteTemplate.step2()");
}
@Override
protected void step3() {
System.out.println("ConcreteTemplate.step3()");
}
}
public class Client {
public static void main(String[] args) {
Template template = new ConcreteTemplate();
template.method();
}
}