模板模式
定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤
我的理解模板模式,定义了方法执行的总体步骤,但每一步的具体实现由子类复写
关键点:模板方法用关键字final 需要复写的方法用abstract 修饰
Example: 考试:三步:发卷,做卷,交卷 现在我们实现考历史和考数学的情况
钩子:
模板模式中有一个钩子的功能,所谓钩子就是某些情下执行这个模板步骤,但在某些情况下又去执行另外的步骤,以我们的为例,当你考数学的时候,发完试卷,老师总要说好好做题不要剽窃,这个时候就可以用到钩子了
1. 模板类
public abstract class ExaminationTemplate { public boolean hook = false;// 钩子 // 模板方法 final void templatMethod() { // 老师有话说 if (hook) { givePapers(); teacherSay(); doPapers(); handInPapers(); } else { givePapers(); doPapers(); handInPapers(); } } // 发卷 abstract void givePapers(); // 做卷 abstract void doPapers(); // 交卷 abstract void handInPapers(); // 师说 abstract void teacherSay(); }
2.历史考试
public class HistoryExamination extends ExaminationTemplate{ @Override void givePapers() { System.out.println("分发历史试卷"); } @Override void doPapers() { System.out.println("做历史试卷"); } @Override void handInPapers() { System.out.println("上交历史试卷"); } @Override void teacherSay() { } }
3. 数学考试
public class MathExamination extends ExaminationTemplate{ @Override void givePapers() { System.out.println("分发数学试卷"); } @Override void doPapers() { System.out.println("做数学试卷"); } @Override void handInPapers() { System.out.println("上交数学试卷"); } @Override void teacherSay() { System.out.println("好好做题不要抄"); } }
4. 运行方法
public class Main { public static void main(String[] args) { //考个历史吧 HistoryExamination historyExamination = new HistoryExamination(); historyExamination.templatMethod(); System.out.println("--------------------"); //考个数学吧,老师有话说哟 MathExamination mathExamination = new MathExamination(); mathExamination.hook=true; mathExamination.templatMethod(); } }
结果:
分发历史试卷
做历史试卷
上交历史试卷
--------------------
分发数学试卷
好好做题不要抄
做数学试卷
上交数学试卷
参考源文档 <http://blog.csdn.net/s464036801/article/details/8468926> ,此处致谢
相关推荐
java的23种常用设计模式:模板方法模式
Java设计模式之模板方法模式.rarJava设计模式之模板方法模式.rar
1.当你想让客户端只扩展算法的特定步骤,而不是整个算法或其结构 2.当你有几个类包含几乎相同的算法,但有一些细微的差异时,请使用 1.你可以让客户端只覆盖大型算
设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...
这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:...
41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之状态模式 44.设计模式之桥接模式 45.代码复用模式(避免篇) 46.代码复用模式(推荐篇) 47.对象创建模式(上篇) 48.对象创建模式(下篇)
java设计模式之模板模式,实例子说明模板模式的使用场景。
文件类型为PDF文件,此文档对20多种java设计模式进行了详细讲解,在中文讲解的过程中还附有代码示例给学习者进行参考,使学习者通过实践更容易理解设计模式的原理。 本文档目录: 1.工厂模式 2.单例模式 3.建造...
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 ...
设计模式应用,自己练手用的设计模式应用,总的而言是个简单的demo而已,练手练手
设计模式 java 模板模式
工厂方法模式(Factory Method) 5. 原型模式(Prototype)结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式...
设计模式的模板方法模式的例子,希望对大家有用~~~~~~~~
设计模式--模板方法模式java例子
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 模板方法模式 java ...
Java设计模式之模板方法模式Java认证考试.pdf
设计模式之模板方法模式Java实现和UML类设计图