设计模式 ☞ 行为型之模板方法模式

r囧r小猫 2023-01-03 04:10 208阅读 0赞

1.1 简介

1.1.1 概述

  模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,允许子类在不修改结构的情况下重写算法的特定步骤。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。

在这里插入图片描述

1.1.2 优缺点

优点:
 ① 封装了不变部分,扩展可变部分。把不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类扩展。
 ② 它在父类中提取了公共的部分代码,便于代码复用。
 ③ 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。

缺点:
 ① 对每个不同的实现都需要定义一个子类,导致类的个数增加,系统更加庞大,设计也更加抽象,间接地增加了系统实现的复杂度。
 ② 父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。
 ③ 由于继承关系自身的缺点,如果父类添加新的抽象方法,则所有子类都要改一遍。

1.2 案例

  我们在毕业时都写过论文,一般都是学校规定论文格式给出一个模板,我们按照格式往里面填充内容,有一些内容是已经写好的不需要我们去更改它,例如 原创声明,也有一些只提供了大标题内容是需要我们自己去写的,例如 绪论,按照模板顺序完成之后就是一篇完整的论文了。其中顺序已经定好了是不能变更的,绪论总不能写在结束语后面吧。如下图所示,在 Abstract­Class 中声明步骤的 step 方法以及规定步骤执行顺序的 templateMethod 方法,根据不同的需求我们需要实现 Abstract­Class 并重写相关方法。但是规定顺序的模板方法不能被重写。

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,208人围观)

还没有评论,来说两句吧...

相关阅读

    相关 设计模式行为模板方法模式

    模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。属于行为性设计模式。 这