Day48【概念解析】模板方法
目录 ▼
整理定义
中文名称:模板方法模式
英文名称:template method
复述展开
What is template method?
💡 模板方法模式是一种行为设计模式。它在父类中定义一个算法操作的框架,允许子类在不修改结构的情况下重写算法的特定步骤,从而可以重新定义一系列新的方法。
🌰*1
制作食物:做饭、烘焙等食物制作过程中,通常有一些固定的步骤,比如准备食材、烹饪、装盘等。这些步骤的顺序是固定的,但具体的实现可能会根据食物的种类和食谱的不同而不同。在这种情况下,我们可以使用模板方法模式,将制作食物的步骤定义在一个方法中,然后让子类来实现具体的烹饪步骤。
🌰*2
建筑设计:在建筑设计中,通常有一些固定的步骤,比如设计、获取许可、施工、装修等。这些步骤的顺序是固定的,但具体的实现可能会根据建筑的类型和设计的不同而不同。在这种情况下,我们可以使用模板方法模式,将建筑设计的步骤定义在一个方法中,然后让子类来实现具体的设计和施工步骤。
🌰*3
软件开发生命周期:在软件开发中,通常有一些固定的步骤,比如需求分析、设计、编码、测试、部署等。这些步骤的顺序是固定的,但具体的实现可能会根据项目的需求和开发方法的不同而不同。在这种情况下,我们可以使用模板方法模式,将软件开发的步骤定义在一个方法中,然后让子类来实现具体的设计、编码和测试步骤。
模板方法模式结构

-
抽象类 (AbstractClass) 会声明作为算法步骤的方法, 以及依次调用它们的实际模板方法。 算法步骤可以被声明为 抽象类型, 也可以提供一些默认实现。
-
具体类 (ConcreteClass) 可以重写所有步骤, 但不能重写模板方法自身。
优缺点
优点:
-
你可仅允许客户端重写一个大型算法中的特定部分, 使得算法其他部分修改对其所造成的影响减小。
-
你可将重复代码提取到一个超类中。
缺点:
-
部分客户端可能会受到算法框架的限制。
-
通过子类抑制默认步骤实现可能会导致违反里氏替换原则。
-
模板方法中的步骤越多, 其维护工作就可能会越困难。
理解体会
模板方法模式的主要优点是它可以实现代码复用,提高代码的可维护性。同时,它也提供了一种控制子类扩展的方法。然而,如果子类过多,可能会导致代码复杂性增加。
模板方法可以降低代码的重复度,如果有多个场景拥有相同的步骤,只是有些许细微差别,那么模板方法会很适合。