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

本文探讨了模板方法模式在实际场景中的应用,如银行办理业务流程中的固定步骤与可变操作,并举例说明了如何通过模板方法模式组织论文写作,强调了其封装和扩展的优势,同时也指出了可能带来的类增多和代码复杂性问题。
摘要由CSDN通过智能技术生成

1.1 简介

1.1.1 概述

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

在这里插入图片描述


1.1.2 优缺点

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

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





1.2 案例

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

在这里插入图片描述



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值