【设计模式 - 模板方法】
模板方法
- 一、定义
- 二、类图
- 三、代码
- 抽象模板类
- 具体模板类
- 场景类
- 结果:
- 四、优缺点
- 优点:
- 缺点:
一、定义
模板方法模式的核心设计思路,是通过在抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子类实现,
但不设计独⽴立访问的方法。简单说也就是把你安排的明明白白的。
二、类图
- 模板方法(templateMethod): 抽取子类公共逻辑,并定义子类调用顺序
- 基本方法(doSomething/doAnything): 子类独有的具体实现逻辑
三、代码
抽象模板类
public abstract class AbstractClass {//基本方法protected abstract void doSomething();//基本方法protected abstract void doAnything();//模板方法 抽取子类公共逻辑public void templateMethod(){System.out.println("实现子类公共逻辑");doSomething();doAnything();}}
具体模板类
public class ConcreteLogicOne extends AbstractClass {@Overrideprotected void doSomething() {System.out.println("ConcreteLogicOne逻辑处理1");}@Overrideprotected void doAnything() {System.out.println("ConcreteLogicOne逻辑处理2");}
}
public class ConcreteLogicTwo extends AbstractClass {@Overrideprotected void doSomething() {System.out.println("ConcreteLogicTwo逻辑处理1");}@Overrideprotected void doAnything() {System.out.println("ConcreteLogicTwo逻辑处理2");}
}
场景类
public class testController {public static void main(String[] args) {AbstractClass concreteLogicOne = new ConcreteLogicOne();concreteLogicOne.templateMethod();ConcreteLogicTwo concreteLogicTwo = new ConcreteLogicTwo();concreteLogicTwo.templateMethod();}
}
结果:
四、优缺点
优点:
- 封装不变部分,扩展可变部分,提高扩展性
- 提取公共部分代码,便于维护,提高复用性
- 行为由父类控制,子类实现,符合开闭原则
缺点:
- 抽象类继承缺点,父类增加了方法,子类需要都实现
- 子类影响父类,子类返回数据到父类,父类进行逻辑处理。子类间接影响了父类结果,提高了阅读代码复杂度
- 每实现具体逻辑都需要增加子类,导致类数量增加,提高了系统复杂性
【设计模式 - 模板方法】相关推荐
- 在一个程序设计里,不同的功能窗口有着相似的功能实现方式,可采用设计模式---模板方法模式
前段时间学习了一些设计模式,最近在做项目的过程中恰巧用到了其中的一个--模板方法模式.这个模式在程序设计过程中可是为小编省去了不少的代码量呢.具体是怎样应用的呢?接下来小编为您分享. 前面博文 ...
- 『设计模式』瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)
23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...
- 『设计模式』设计模式--模板方法模式
23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...
- 行为设计模式 - 模板方法设计模式
模板方法设计模式 模板方法是一种行为设计模式.模板方法设计模式用于创建方法存根,并将一些实现步骤推迟到子类. 目录[ 隐藏 ] 1模板方法设计模式 1.1模板方法抽象类 1.2模板方法具体类 1.3模 ...
- 《编码规范和测试方法——C/C++版》作业 ·006——设计模式 · 模板方法
文章目录 一.设计模式-模板方法 1.简单介绍 2.框架演示 3.实际案例 一.设计模式-模板方法 1.简单介绍 简单来说,就是先在父类FFF中定义好一个函数AAA,然后这个函数AAA代表了一个操作M ...
- 行为型设计模式---模板方法模式
设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...
- Java设计模式-模板方法模式详解
Java设计模式-模板方法模式 文章目录 Java设计模式-模板方法模式 0.前言 1.模板方法原理 2.模板方法模式中的角色 3.模板方法模式的UML类图 4.代码实现 5.编码测试 6.模板模式中 ...
- Java设计模式 - 模板方法模式
Java设计模式 - 模板方法模式 定义一个算法的骨架,并将一些步骤通过子类表达. UML图示 要点 1. 定义一个算法的骨架 - 建立一个抽象类 2. 将一些步骤通过子类表达 - 子类继承抽象类 赋 ...
- linkin大话设计模式--模板方法模式
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...
- JAVA 设计模式 模板方法模式
定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...
最新文章
- 放射科医生选择AI供应商的10大标准
- 微软解释Edge浏览器比Chrome更加安全的原因
- Product Helper
- TC SRM601
- KDB支持单步调试功能(ARM架构)
- 【AI视野·今日CV 计算机视觉论文速览 第233期】Tue, 3 Aug 2021
- 如何提升会员列表数据的质量
- MATLAB图像去雾算法
- php excel引入tp,TP 引入phpExcel
- Vue学习----第三天_webpack(学习webpack看这一篇就够了1.8w字)【6.7】
- Windows11拼音打字不出现候选字词窗口
- 如何在linux系统中安装虚拟机?
- mac os 更改mac地址
- web架构中的前置机
- safari如何降低版本?mac上的safari版本回退方法!
- 购物车模块设计及实现(SSH架构)
- idea的一揽子工程
- 3dsmax中计算机快捷键大全,3dmax快捷键大全(最常用又详细 赶快收藏)
- 江波龙深化存储技术优势 紧密结合物联网应用需求创新
- 自定义语义分割数据集(划分训练集与验证集)、并且将一个文件夹下的所有图片的名字存到txt文件