每天学点小知识之设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示:

1.如何理解模板方法模式

  1. 模板方法模式是结构最简单行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中。

  2. 在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。

  3. 模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种类行为型模式。

  4. 模板方法模式是一种基于继承的代码复用技术,它体现了面向对象的诸多重要思想,是一种使用频率较高的模式。模板方法模式广泛应用于框架设计(例如Spring、JUnit等)中,以确保通过父类来控制处理流程的逻辑顺序(例如框架的初始化、测试流程的设置等)。

2.模板方法模式的核心思想

  1. 定义算法的骨架:在父类中定义一个模板方法,该方法包含算法的步骤。

  2. 延迟实现细节:将算法中的某些步骤抽象出来,由子类实现。

  3. 控制流程:父类控制算法的流程,子类只负责实现具体的步骤。

3.模板方法模式的优缺点

优点

  1. 提高代码复用

  2. 提高扩展性

  3. 符合开闭原则和单一职责原则

  4. 便于维护

缺点

  1. 可能导致类的数量增加

  2. 限制了子类的灵活性

  3. 可能违反里氏替换原则(如果子类对父类的某些方法进行了不合理的重写,可能会导致程序行为异常)

4.模板方法模式的适用场景

  1. 对一些复杂的算法进行分割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而一些可以改变的细节由其子类来实现。即一次性地实现一个算法的不变部分,并将可变的行为留给子类来实现。

  2. 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复

  3. 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制

5.模板方法模式与策略模式的对比

以上内容为根据书本内容配合搜索引擎整理得来,目的是为了学习,要是有侵权的情况发生,请联系我,我会立即予以删除,谢谢!

一起成长,人生是马拉松,可以跑得慢,但一定要在路上。

相关推荐
2301_780943845 分钟前
linux 对文件打补丁(Patch)
linux·运维·服务器
ICT董老师10 分钟前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php
敬往事一杯酒哈15 分钟前
Ubuntu 20.04 安装Anacada
linux·运维·ubuntu
还在忙碌的吴小二16 分钟前
Jenkins CLI (jcli) 使用手册
运维·jenkins
ChangYan.19 分钟前
Windows命令行(cmd)下快速查找文件路径(类似Linux下find命令)
linux·运维·服务器
陈让然35 分钟前
VS Code新版本无法连接WSL ubuntu18.04
linux·运维·ubuntu
lpfasd12338 分钟前
宝塔面板使用流程及注意事项
运维
小杰帅气39 分钟前
神秘的环境变量和进程地址空间
linux·运维·服务器
胖咕噜的稞达鸭41 分钟前
进程间的通信(1)(理解管道特性,匿名命名管道,进程池,systeam V共享内存是什么及优势)重点理解代码!
linux·运维·服务器·数据库