前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式 ☞ 行为型之模板方法模式

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

作者头像
Demo_Null
发布2021-01-13 14:57:57
2870
发布2021-01-13 14:57:57
举报
文章被收录于专栏:Java 学习Java 学习

1.1 简介

1.1.1 概述

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

在这里插入图片描述
在这里插入图片描述

1.1.2 优缺点

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

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

1.2 案例

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

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 简介
    • 1.1.1 概述
      • 1.1.2 优缺点
      • 1.2 案例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档