TempleteMethod - 模板方法模式
概述:
父类定义过程,子类具体处理
说明:
1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系我删除!
转载请标注出处!
案例:
案例说明:
是一段讲字符和字符串循环处理5次的简单程序
主要代码:
package Gof.TemplateMethod; public abstract class AbstractDisplay { // 抽象类AbstractDisplay public abstract void open(); // 交给子类去实现的抽象方法(1) open public abstract void print(); // 交给子类去实现的抽象方法(2) print public abstract void close(); // 交给子类去实现的抽象方法(3) close public final void display() { // 本抽象类中实现的display方法 open(); // 首先打开… for (int i = 0; i < 5; i++) { // 循环调用5次print print(); } close(); // …最后关闭。这就是display方法所实现的功能 } }
代码链接:传送门
uml综述
- AbstractClass: 实现模板方法,定义抽象方法
- ConcreteClass: 实现抽象方法
收获:
使用父类类型的变量保存子类实例的有点是,即使没有用instanceof等指定子类的种类,程序也可以正常工作
里氏替换原则: 无论在父类类型的变量中保存的呢个子类的实例,程序都可以正常工作 (通用继承规则)
申明抽象方法是为了:
- 期待子类实现抽象方法
- 要求子类实现抽象方法
java 接口不能替代抽象类的原因:interface的方法不可以实现,而abstractClass 方法可以实现
相关设计模式:
- Factory Method : 将template method 生成一个实例
- strategy : 委托改变程序行为, Template Method 则是通过继承改变程序行为
注意:
此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!
PS:欢迎大家来到我的小站,鸣谢!
猜你喜欢