模板(Template)模式
模板模式是类的行为模式。
1.定义:定义一个操作中算法的骨架(或称为顶级逻辑),将一些步骤(或称为基本方法)的执行延迟到其子类中.
2.模板模式与继承
模板方法估计恰当地使用继承。此模式可以用来改写一些拥有相同功能的相关的类,将可复用的一般性行为代码移到基类里面,而把特殊化的行为代码移到子类里面。熟悉摸班方法模式是重新学习继承的开始。
3.模板模式中的方法
1)模板方法:必须由抽象类实现,该方法是一个顶级逻辑,调用任意多个基本方法。子类不应该修改该方法
2)基本方法:模板方法所调用的方法,有可细分为抽象方法,具体方法,钩子方法
抽象方法:强迫子类重写的
具体方法:不需要子类重写的,最好声明为final
钩子方法:子类可以重写的,一般是个空方法(钩子方法的命名应该以do开头,这是一个通用规范)
补充:模板模式的设计理念是尽量减少必须由子类置换掉的基本方法的数量(可以理解为尽量减少抽象方法和钩子方法的数量。)
4.重构的原则
总的原则:行为上移,状态下移(抽象类中的具体方法应该尽量多,而成员变量应该尽量少)
1)应当根据行为而不是状态定义一个类
2)在实现行为时,应该尽量用取值方法获取成员变量,而不是直接应用成员变量
3)给操作划分层次。一个类的行为应当放到一个小组核心方法里面,这些方法可以很方便地在子类中置换
4)将状态的确认推迟到子类中去。
5.使用模板模式,用多态取代条件转移(也可以使用策略模式)
6.问题:模板模式和策略模式有什么区别?
补充:个人认为这个模式比较好理解,而且在实际编程中是十分常用。虽然如此,但是学习这个模式的过程中,我还是有许多收获的,主要是加深了对继承的理解,对OO的核心思想有了新的认识,就像阎博士说的“熟悉模扳方法模式便成为一个重新学习继承的好地方”