ad

读懂《Java架构之完美设计 实战经典》_为更好架构做准备_2.5.10 模板方法模式

admin 70 2023-10-26

【摘要】 本书摘自《Java架构之完美设计 实战经典》一书中第2章,第5节,由颜廷吉编著。

2.5.10 模板方法模式

读懂《Java架构之完美设计 实战经典》_为更好架构做准备_2.5.10 模板方法模式

1.概述

模板方法模式中的模板定义了核心的代码骨架, 一些有着不同实现方式的代码被放在子 中。也就是说在父类中定义算法的主要流程,而把一些个性化的步骤延迟到子类中去实 现,父类始终控制着整个流程的主动权,子类只是辅助父类实现某些可定制的步骤。

在设计模板模式时需要把业务中通用的代码提取出来,放在一个抽象类中,在抽象类中 规定方法执行的方式。将其中一些具体实现不一样的方法定义为抽象方法,由子类通过继承 抽象类实现这些抽象方法。也可说是把通用的算法抽象出来,把其固定的部分封装起来, 对于可变的部分程序员可以进行扩展。提取出代码的公共部分放在父类,行为由父类控制, 子类负责实现特殊的可变部分。

因此,模板中的方法分为两类。

(1)基本方法

基本方法,是由子类实现的方法,具体模板类来实现父类所定义的一个或多个抽象方 法,也就是父类定义的基本方法在子类中得以实现。

(2)模板方法

模板方法可以有一个或几个, 一般是一个具体方法,也就是一个框架,实现对基本方法的调 度,完成固定的逻辑。为防止恶意操作, 一般模板方法都会添加final关键字,不允许被覆写。

2.类图

模板方法模式类图如图2-39所示。

3. 代码示例

【案例8——模板方法模式】

背景:配套代码以顾客到饭店吃饭为例来 说明模板模式(除了顾客点菜内容之外,整 个服务都是一套固定的流程:安排座位、点 菜、上菜、结算)。

4.优缺点

模板方法模式的优点是:

1)封装不变部分,扩展可变部分。 2)提取公共代码,便于维护。

3)行为由父类控制,子类实现。

模板方法模式的缺点是:

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

5.适用场景

1)多个子类有公有的方法,并且逻辑基本相同。

2)重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各 个子类实现。

3)重构时,把相同的代码抽取到父类中,然后通过钩子方法约束其行为。

6.模板方法模式与建造者模式区别

模板方法模式通过分析子类,把不变的行为逻辑搬移到父类中,以去除子类中的重复定 义,而在子类中则实现具体的行为,也就是定义中所说的延迟到子类实现。最大化地利用了 代码重用原则。

建造者模式和模板方法模式非常相似,只是多了一个指挥类,该类与模板中基类的固定 算法的功能相同,它是一个创建对象的固定算法。它们的区别就看构建的算法是否需要指挥 者这个类来创建。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:读懂《Java架构之完美设计 实战经典》_为更好架构做准备_2.8 架构编程思想
下一篇:读懂《Java架构之完美设计 实战经典》_为更好架构做准备_2.3.4 Scrum 开发模型
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×