模版方法模式(Template Method Pattern)
模版方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余的逻辑有不同的实现。
简略类图:
示例:
1、类图
2、java代码
AbstractClass抽象类:
package templateMethod.template;
abstract public class AbstractClass {
public void templateMethod(){
doOperation1();
doOperation2();
doOperation3();
}
protected abstract void doOperation3();
protected abstract void doOperation2();
private final void doOperation1() {
System.out.println("doOperation1。。。。。。");
}
}
public void templateMethod(){
doOperation1();
doOperation2();
doOperation3();
}
protected abstract void doOperation3();
protected abstract void doOperation2();
private final void doOperation1() {
System.out.println("doOperation1。。。。。。");
}
}
ConcreteClass类:
package templateMethod.template;
public class ConcreteClass extends AbstractClass{
protected void doOperation2() {
System.out.println("doOperation2。。。。。。");
}
protected void doOperation3() {
System.out.println("doOperation3。。。。。。");
}
}
protected void doOperation2() {
System.out.println("doOperation2。。。。。。");
}
protected void doOperation3() {
System.out.println("doOperation3。。。。。。");
}
}
Client类:
package templateMethod;
import templateMethod.template.AbstractClass;
import templateMethod.template.ConcreteClass;
public class Client {
private static AbstractClass template;
public static void main(String args[]){
template = new ConcreteClass();
template.templateMethod();
}
}
import templateMethod.template.ConcreteClass;
public class Client {
private static AbstractClass template;
public static void main(String args[]){
template = new ConcreteClass();
template.templateMethod();
}
}