模版模式是建立一个抽象类或接口,抽象类中有完成一个任务的步骤1,2,3,如果步骤1与3相同,只是步骤2的执行不同,那么可以建立子类继承抽象类或者不同子类接口实现接口,从而完成整个任务。
例如:
public interface A{
void yunSuan(Object B)
}
public class ChildOneA implements A{
@Override
public void yunSuan(Object B){
system.out.println("先洗菜");
}
}
public class ChildTwoA implements A{
@Override
public void yunSuan(Object B){
system.out.println("先买菜");
}
}
public class ChildThreeA implements A{
@Override
public void yunSuan(Object B){
system.out.println("先炒菜");
}
}
上述模式就是模版模式。
那么模版模式与责任链模式又该怎么关联起来呢???
将实现类封装到map里。
public class Constants{
public static Map <Integer,String> MAP=new HashMap<Integer,String>(){
put(1,ChildOneA);
put(2,ChildTwoA);
put(3,ChildThreeA);
}
}
在具体的业务代码里
public class BusinessCode{
public void bussinessMethod(Integer type){
//获取子类的计费类名
String childService=Constants.MAP.get( type);
((A)SpringContextUtil.getBean(childService)).yunSuan(Object B)
}
}
其中,String childService=Constants.MAP.get( type);根据hashMap的原理,数组+链表的格式,责任链模式是将责任对象串成链来遍历,不是当前责任对象则找责任对象的下一级,hashMap链表的遍历和数组的key值查找过程相当于一个责任链的简版模式,可以认为责任链模式在模版模式的应用或模版模式在责任链模式的功能拓展。