Template Method(模板方法)模式

简介:

1. 意图

定义一个操作中的算法的骨架. 而将一些步骤延迟到子类中.
它使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.

2. 动机


3. 适用性

一次性实现一个算法的不变部分. 并将可变部分的行为留给子类去实现.
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复.
控制子类扩展. 模板方法只在特定点调用"hook"操作.只允许子类扩展这些地方.

4. 结构图


5. 参与者

AbstractClass(抽象类)
    ----定义抽象的原语操作(Primitive operation).具体的子类将重新定义这些原语操作.
    ----实现一个模板方法.定义算法的骨架. 在模板方法里会调用原语操作.
ConcreteClass(具体类)
    ----实现原语操作以完成算法中与特定子类相关的步骤.

目录
相关文章
|
设计模式 算法
设计模式9 - 模板方法模式【Template Method Pattern】
设计模式9 - 模板方法模式【Template Method Pattern】
59 0
|
5月前
|
XML 设计模式 JSON
模板方法模式(Template Method Pattern)
模板方法模式是一种行为型设计模式,定义一个操作中的算法骨架,将某些步骤的实现延迟到子类。子类可以在不改变算法结构的情况下重新定义算法的某些步骤。适用于多个类有相似操作流程且部分步骤需要定制的场景。优点包括高复用性、扩展性强和清晰明确;缺点是灵活性降低和可能引入性能开销。示例包括文件解析和策略模式的对比。
86 3
模板方法模式(Template Method Pattern)
|
12月前
|
设计模式 Java 容器
【设计模式】JAVA Design Patterns——Async Method Invocation(异步方法调用模式)
【设计模式】JAVA Design Patterns——Async Method Invocation(异步方法调用模式)
|
8月前
|
Java C++ Spring
@Async注解的方法有哪些限制?
@Async注解的方法使用限制
165 2
|
前端开发 JavaScript
玩转ES6(四)Set、Map、Class类和decorator 装饰器
玩转ES6(四)Set、Map、Class类和decorator 装饰器
180 0
|
前端开发 开发者
class-constructor 构造器中 super 函数的使用说明|学习笔记
快速学习 class-constructor 构造器中 super 函数的使用说明
138 0
|
算法 Java Spring
设计模式六: 模板方法(Template Method)
简介 模板方法属于行为型模式的一种. 实现层面上, 在抽象类中定义了算法或流程的骨架, 将其中易变的部分延迟到子类实现, 也就是允许它的子类实现其中的某些步骤. 模板方法适用于算法不变, 但算法中某些步骤有变化的场景, 例如Spring中JDBC事务操作,打开连接-->开启事务-->执行sql-->提交事务-->关闭连接, 每次操作均按照这个步骤进行, 变化的是执行的sql不一样. 意图 定义算法框架,并将一些步骤的实现延迟到子类实现。
1023 0
重构——53以工厂函数取代构造函数(Replace Constructor with Factory Method)
以工厂函数取代构造函数(Replace Constructor with Factory Method):你希望在创建对象时不仅仅是做简单的构造动作;将构造函数替换为工厂函数
1588 0