前言
最近看DRP视频时,视频中提到了模板方法,这个模式之前也学习过,现在总结一下!
概念
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法结构即可重定义该算法的某些特定步骤。
UML图
代码实现
抽象类
package com.bjpowernode.pattern;
public abstract class AbstractClass {
public static final String METHOD_1 = "m1";
public static final String METHOD_2 ="m2";
public final void templateMethod(String methodName){
if(METHOD_1.equals(methodName)){
doOperation1(methodName);
}
if(METHOD_2.equals(methodName)){
doOperation2(methodName);
}
}
protected abstract void doOperation1(String methodName);
protected abstract void doOperation2(String methodName);
}
具体类
package com.bjpowernode.pattern;
public class ConcreteClass extends AbstractClass {
@Override
protected void doOperation1(String methodName) {
System.out.println("ConcreteClass-->>doOperation1()" + methodName);
}
@Override
protected void doOperation2(String methodName) {
System.out.println("ConcreteClass-->>doOperation2()" + methodName);
}
}
测试
package com.bjpowernode.pattern;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
AbstractClass a = new ConcreteClass();
a.templateMethod(AbstractClass.METHOD_1);
//a.templateMethod(AbstractClass.METHOD_2);
}
}
执行测试类结果