type
status
date
slug
summary
tags
category
icon
password
整理定义
中文名称:模板方法模式
英文名称:template method
出处 | 定义 |
中国大百科全书 | 定义一个操作的算法框架,算法的某些步骤会在子类中实现,它使得子类可以不改变整个算法的结构即可重定义该算法的某些特定步骤的一种设计模式。 |
设计模式 | 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 |
百度百科 | 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。 让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。 |
维基百科 | 模板方法是超类(通常是抽象超类)中的方法,并根据许多高级步骤定义操作的骨架。 这些步骤本身是通过与模板方法相同的类中的其他辅助方法来实现的。 |
复述展开
What is template method?
模板方法模式是一种行为设计模式。它在父类中定义一个算法操作的框架,允许子类在不修改结构的情况下重写算法的特定步骤,从而可以重新定义一系列新的方法。
🌰*1
制作食物:做饭、烘焙等食物制作过程中,通常有一些固定的步骤,比如准备食材、烹饪、装盘等。这些步骤的顺序是固定的,但具体的实现可能会根据食物的种类和食谱的不同而不同。在这种情况下,我们可以使用模板方法模式,将制作食物的步骤定义在一个方法中,然后让子类来实现具体的烹饪步骤。
🌰*2
建筑设计:在建筑设计中,通常有一些固定的步骤,比如设计、获取许可、施工、装修等。这些步骤的顺序是固定的,但具体的实现可能会根据建筑的类型和设计的不同而不同。在这种情况下,我们可以使用模板方法模式,将建筑设计的步骤定义在一个方法中,然后让子类来实现具体的设计和施工步骤。
🌰*3
软件开发生命周期:在软件开发中,通常有一些固定的步骤,比如需求分析、设计、编码、测试、部署等。这些步骤的顺序是固定的,但具体的实现可能会根据项目的需求和开发方法的不同而不同。在这种情况下,我们可以使用模板方法模式,将软件开发的步骤定义在一个方法中,然后让子类来实现具体的设计、编码和测试步骤。
模板方法模式结构
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fdea38628-64dc-40fd-8d17-2efa87e3d554%2F40b1152e-8bd8-4992-8ddf-b77fe8f8f799%2FUntitled.png?table=block&id=f1392eec-2162-419d-853d-dfe51409c0f0&t=f1392eec-2162-419d-853d-dfe51409c0f0&width=432&cache=v2)
- 抽象类 (AbstractClass) 会声明作为算法步骤的方法, 以及依次调用它们的实际模板方法。 算法步骤可以被声明为
抽象
类型, 也可以提供一些默认实现。
- 具体类 (ConcreteClass) 可以重写所有步骤, 但不能重写模板方法自身。
优缺点
优点:
- 你可仅允许客户端重写一个大型算法中的特定部分, 使得算法其他部分修改对其所造成的影响减小。
- 你可将重复代码提取到一个超类中。
缺点:
- 部分客户端可能会受到算法框架的限制。
- 通过子类抑制默认步骤实现可能会导致违反里氏替换原则。
- 模板方法中的步骤越多, 其维护工作就可能会越困难。
理解体会
模板方法模式的主要优点是它可以实现代码复用,提高代码的可维护性。同时,它也提供了一种控制子类扩展的方法。然而,如果子类过多,可能会导致代码复杂性增加。
模板方法可以降低代码的重复度,如果有多个场景拥有相同的步骤,只是有些许细微差别,那么模板方法会很适合。
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day48
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。