一、概念
1、概念
模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式
。
它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2、举例理解
网上举了一个请客吃饭的例子,我觉得解释的挺好的。我们每个人去请客吃饭。一般都含三个步骤:点单、吃东西、买单,而且顺序就是从做左到右的。
在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同,如图1所示
所以从开发角度来分析,有时也会遇到类似的情况,某个方法的实现需要多个步骤(类似“ 请客 ”),其中有些步骤是固定的(类似“点单”和“买单”),而有些步骤并不固定,存在
可变性(类似“吃东西”)。
为了提高代码的复用性和系统的灵活性,我们把"点单"和"买单"的实现放在父类中实现,而对于"吃东西",因为差异性就很大所以在父类中只做一个声明,将其具体实现放在不同的
子类中,在一个子类中提供“吃面条”的实现,而另一个子类提供“吃满汉全席”的实现。通过使用模板方法模式,一方面提高了代码的复用性,另一方面还可以利用面向对象的多态性,
在运行时选择一种具体子类,实现完整的“请客”方法,提高系统的灵活性和可扩展性。
3、结构和说明
AbstractClass:抽象类。用来定义算法骨架和原语操作,在这个类里面,还可以提供算法中通用的实现
ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成跟特定子类相关的功能。
pub