模板方法模式
public class TemplateMethodPattern { public abstract class TemplateClass{ private final void concreteMethod(){ //System.out.println("you can't change this method!"); System.out.println("您选择了必修课高等数学!组合数学!离散数学!概率论!"); } public abstract void abstractMethod(); public void defaultMethod(){ System.out.println("默认您选择了Linux操作系统.你可以更改!"); } public final void templateMethod(){ concreteMethod(); abstractMethod(); defaultMethod(); } } public class ConcreteClass1 extends TemplateClass{ public void abstractMethod() { //System.out.println("this is concreteclass1's abstract method."); System.out.println("我选择数据挖掘!大数据!海量计算!"); } public void defaultMethod(){ //System.out.println("this is concreteclass1's default method."); System.out.println("我不想选择Linux操作系统!"); } } public class ConcreteClass2 extends TemplateClass{ public void abstractMethod() { //System.out.println("this is concreteclass1's abstract method."); System.out.println("我选择挖掘机与炒菜!美国动画片鉴赏!微博段子手!"); } } public void test(){ ConcreteClass1 class1 = new ConcreteClass1(); class1.templateMethod(); ConcreteClass2 class2 = new ConcreteClass2(); class2.templateMethod(); } public static void main(String[] args) { new TemplateMethodPattern().test(); } }
模板方法模式适合那种提供基本框架、骨架、模板、大体功能的那种应用;然后具体子类去完善补充或者修改(修改你能修改的东西)
以选课系统为例,所有学生的选课可以看成是一个模板方法,包括必修课,默认课和选修课,
1.必修课是子类必须得服从的,没得改,定义成了final,叫做ConcreteMethod;
2.默认课是默认选择的,如果你不取消或者去重写,那么对不起这个课你也要去上,叫做DefaultMethod;
3.选修课是必须自己去选择的,你不能完全不选,怎么选是你的事情,你选择为空也算是要选的,就是你必须实现的方法,叫做AbstractMethod;
4.这四个方法放一块儿叫做模板,就和我们选课的时候那个提交按钮一样,这个按钮都封装好了,每个人都是通过这个模板来实现功能,如果你不点提交,不好意思,这学期算你什么课也没有,回家休息,选课就是这么蛋疼,叫做TemplateMethod;

浙公网安备 33010602011771号