Day48【概念解析】模板方法
行业概念

Day48【概念解析】模板方法

· 约 1,017 字 · 阅读约 6 分钟
目录

整理定义

中文名称:模板方法模式

英文名称:template method

复述展开

What is template method?

💡 模板方法模式是一种行为设计模式。它在父类中定义一个算法操作的框架,允许子类在不修改结构的情况下重写算法的特定步骤,从而可以重新定义一系列新的方法。

🌰*1

制作食物:做饭、烘焙等食物制作过程中,通常有一些固定的步骤,比如准备食材、烹饪、装盘等。这些步骤的顺序是固定的,但具体的实现可能会根据食物的种类和食谱的不同而不同。在这种情况下,我们可以使用模板方法模式,将制作食物的步骤定义在一个方法中,然后让子类来实现具体的烹饪步骤。

🌰*2

建筑设计:在建筑设计中,通常有一些固定的步骤,比如设计、获取许可、施工、装修等。这些步骤的顺序是固定的,但具体的实现可能会根据建筑的类型和设计的不同而不同。在这种情况下,我们可以使用模板方法模式,将建筑设计的步骤定义在一个方法中,然后让子类来实现具体的设计和施工步骤。

🌰*3

软件开发生命周期:在软件开发中,通常有一些固定的步骤,比如需求分析、设计、编码、测试、部署等。这些步骤的顺序是固定的,但具体的实现可能会根据项目的需求和开发方法的不同而不同。在这种情况下,我们可以使用模板方法模式,将软件开发的步骤定义在一个方法中,然后让子类来实现具体的设计、编码和测试步骤。

模板方法模式结构

image

  1. 抽象类 (Abstract­Class) 会声明作为算法步骤的方法, 以及依次调用它们的实际模板方法。 算法步骤可以被声明为 抽象类型, 也可以提供一些默认实现。

  2. 具体类 (Concrete­Class) 可以重写所有步骤, 但不能重写模板方法自身。

优缺点

优点:

  • 你可仅允许客户端重写一个大型算法中的特定部分, 使得算法其他部分修改对其所造成的影响减小。

  • 你可将重复代码提取到一个超类中。

缺点:

  • 部分客户端可能会受到算法框架的限制。

  • 通过子类抑制默认步骤实现可能会导致违反里氏替换原则。

  • 模板方法中的步骤越多, 其维护工作就可能会越困难。

理解体会

模板方法模式的主要优点是它可以实现代码复用,提高代码的可维护性。同时,它也提供了一种控制子类扩展的方法。然而,如果子类过多,可能会导致代码复杂性增加。

模板方法可以降低代码的重复度,如果有多个场景拥有相同的步骤,只是有些许细微差别,那么模板方法会很适合。

相关文章