Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式(七)——模板模式

设计模式(七)——模板模式

作者头像
小森啦啦啦
发布于 2019-07-13 05:34:39
发布于 2019-07-13 05:34:39
28400
代码可运行
举报
文章被收录于专栏:IT笔记分享IT笔记分享
运行总次数:0
代码可运行

模板模式

定义一个操作中的算法框架,将一些步骤延迟到子类中,使子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

子类重写或实现父类的方法。再由父类的模板方法调用这些公共的方法。所以被子类重写或者不必暴露的方法一般定义为私有的。

优点

  • 封装不变不封,扩展可变部分。
  • 提取公共部分代码,便于维护。
  • 行为由父类控制,子类实现。

使用场景

  • 多个子类有公共的方法,并且逻辑基本相同。
  • 重要、复杂的算法,可以把核心算法设计为模板方法,相关细节由子类实现。
  • 重构时候,经相同代码提取到父类,再通过钩子函数约束其行为。

代码

GitHub

定义抽象模板类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public abstract class AbstractTemplate {    protected abstract void method1();    protected abstract void method2();    public void method(){        this.method1();        this.method2();    }}

定义子类实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ConcreteTemplate1 extends AbstractTemplate {    @Override    protected void method1() {        System.out.println("模板1业务逻辑方法1");}    @Override    protected void method2() {        System.out.println("模板1业务逻辑方法2");    }}public class ConcreteTemplate2 extends AbstractTemplate {    @Override    protected void method1() {        System.out.println("模板2业务逻辑方法1");    }    @Override    protected void method2() {        System.out.println("模板2业务逻辑方法2");    }}

测试类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args){    AbstractTemplate template1 = new ConcreteTemplate1();    AbstractTemplate template2 = new ConcreteTemplate2();    template1.method();    System.out.println("-----------------");    template2.method();}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
模板1业务逻辑方法1模板1业务逻辑方法2-----------------模板2业务逻辑方法1模板2业务逻辑方法2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT笔记分享 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java设计模式-模板方式模式
模板方法模式: 定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变一个算法的结构的前提下重定义该算法的某些特定步骤. (图片来源: 设计模式:可复用面向对象软件的
Java帮帮
2018/03/16
9960
Java设计模式-模板方式模式
设计模式实战-模板模式,代码复用神器
模板模式(Template Pattern)又被称作模板方法模式(Template Method Pattern),它是一种简单的、常见的且应用非常广泛的模式。
架构师修炼
2020/07/17
9110
Java 设计模式之模板方法开发中应用
模板方法差不多是Java设计模式中除单例之外的另一种非常简单也是我们在写程序时非常常用的一种方法了。以至于当你看到模板方法的设计模式时你会感觉到,这不是我在程序中经常用到的方法么。
用户5166556
2019/04/16
4270
java设计模式之模板模式,站在巨人的肩膀上成功
模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。
用户4361942
2019/05/24
1.4K0
Java设计模式(十四)----模板方法模式
模板方法模式 一、概述 二、结构 三、具体案例 四、优缺点和设计思想 一、概述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意 二、结构  模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。   模板方法模式需要开发抽象类和具体
汤高
2018/01/11
8870
Java设计模式(十四)----模板方法模式
模板模式:一种体现多态的设计模式
模板模式(Template),又叫模板方法模式(Template Method),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行。模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。UML类图如下:
BUG弄潮儿
2020/12/17
3950
模板模式:一种体现多态的设计模式
Java设计模式之(十三)——模板方法模式
模板方法模式(Template Method Pattern):定义一个操作中的算法的框架, 而将一些步骤延迟到子类中。 使得子类可以不改 变一个算法的结构即可重定义该算法的某些特定步骤。
IT可乐
2021/12/04
8K0
Java设计模式之(十三)——模板方法模式
抽丝剥茧——模板方法设计模式
我们在日常的业务开发中如果在一个类中存在一些公共的代码一般会选择方法,而在多个类中存在公共的方法一般会提取一个公共类,以此来减少重复代码的书写。而进行的模板方法设计模式也有点类似,只不过它「强调的是将一个任务的公共代码抽取出来,需要根据不同的条件进行不同处理的留给子类重写。」
石的三次方
2021/01/05
2430
设计模式——模板方法模式
● 1.定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
蜻蜓队长
2018/08/03
4120
设计模式——模板方法模式
【设计模式系列】行为型之模板模式
1.模板模式:定义一个操作算法中的框架,而将这些步骤延迟加载到子类中。 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;
沁溪源
2020/11/04
3170
模板方法模式(Template Method Pattern)
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure. — 《Design Patterns: Elements of Reusable Object-Oriented Software》
mingmingcome
2021/11/29
3280
模板方法模式(Template Method Pattern)
Java描述设计模式(19):模板方法模式
通常一款互联网应用的开发流程如下:业务需求,规划产品,程序开发,测试交付。现在基于模板方法模式进行该过程描述。
知了一笑
2019/11/18
4000
设计模式(十四):模板模式
设计模式(十四):模板模式
Java架构师必看
2021/04/13
2230
设计模式----模板方法模式
在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码的可扩展性和可维护性,模板方法模式在这种场景下就派上了用场。
大忽悠爱学习
2021/11/15
4950
设计模式-模板模式
模板模式 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 1.优点 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 它在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。 2.缺点 对每个不同的实现
cwl_java
2019/10/26
3140
设计模式——模板模式
设计模式——模板模式
Java架构师必看
2021/05/14
4110
设计模式——模板模式
跟着GPT学设计模式之模板模式
模板模式,全称是模板方法设计模式,英文是 Template Method Design Pattern。模板模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。该模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板模式的核心思想是将一个算法的不变部分封装在一个模板方法中,将可变的部分留给子类去实现。
codetrend
2024/07/19
1180
设计模式-模板模式
当房子建好后,相同的房间规格,但是可以根据不同的需求进行不同的装修,有把天花板刷黄,有些刷绿,有些乱刷...这个很类似于设计模式中的模板模式,根据相同的模板生成出来后内部装修可以自定义。
逍遥壮士
2020/09/18
4470
设计模式-模板模式
一天一个设计模式:模板方法模式
  模板方法模式是类的行为模式,准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的意思。
用户1134788
2018/12/10
3900
一天一个设计模式:模板方法模式
图解Java设计模式之模板模式
1)制作豆浆的流程 选材 – 》添加配料 --》浸泡 --》放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡和放到豆浆机打碎这几个步骤对于每种口味的豆浆都是一样的 4)模版方法模式比较简单,很容易就想到这个方案,因此就直接使用。
海仔
2020/04/01
4250
图解Java设计模式之模板模式
推荐阅读
相关推荐
Java设计模式-模板方式模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验