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

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

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.模板方法模式与策略模式的对比

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

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

相关推荐
文牧之12 分钟前
PostgreSQL的扩展 pgcrypto
运维·数据库·postgresql
白总Server12 分钟前
多智能体系统的中间件架构
linux·运维·服务器·中间件·ribbon·架构·github
2401_867021902 小时前
文件缓冲区(IO与文件 ·III)(linux/C)
linux·运维·服务器·c语言
刘某的Cloud2 小时前
rabbitmq常用命令
linux·运维·分布式·rabbitmq·系统
悄悄敲敲敲3 小时前
Linux:进程间通信->命名管道
linux·运维·服务器
io无心3 小时前
Docker绑定端口报错
运维·docker·容器
碎梦归途5 小时前
23种设计模式-行为型模式之策略模式(Java版本)
java·开发语言·jvm·设计模式·策略模式·行为型模式
悄悄敲敲敲6 小时前
Linux:进程间通信->共享内存
linux·运维·服务器
绵绵细雨中的乡音6 小时前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习