模版方法Template Method, 2024-05-05

2024-05-04  本文已影响0人  Mc杰夫

(2024.05.05 Sun)
模版方法是一种行为设计模式,该方法在超类(superclass)中定义了算法的骨架(skeleton),并允许子类在不改变算法结构的前提下可以重写(override)特定步骤。

该方法促进了代码复用,在超类中封装(encapsulate)了算法的结构,并允许子类提供算法中特定步骤的具体实现,提供了灵活性和定制化。

模版方法有几个特征:

Components

模版方法中有如下四个部分

  1. 抽象类/接口(Abstract Class/Interface)
    用于定义模版方法的朝里,提供了算法的骨干/架构,其中定义了特定步骤,而其他的步骤设置为抽象方法,或定义为钩子(hooks)可被子类覆盖(override)。抽象类同样可以包括具体方法,可被子类共用。

  2. 模版方法(Template Method)
    抽象类中的方法,定义了算法的结构,通过特定顺序调用其他方法。该方法可声明以防止子类改变算法的结构。模版方法包含了一系列对其他方法的调用(不管是抽象或是具体实现)。

  3. 抽象方法/钩子方法(Abstract/Hook Methods)
    抽象方法在抽象类中声明了未实现的方法。抽象方法类似于placeholder,在子类中实现。子类必须实现这些方法的具体操作以实现完整的算法。

  4. 具体子类(Concrete Subclasses)
    子类扩展了抽象类,提供了抽象类中抽象方法的具体实现。每个子类可以覆盖算法中的特定步骤用于定制算法的行为而无需改变整体算法结构。

下图是一个具体案例


模版模式UML

优缺点

优点:

缺点:

与其他模式的关系

Reference

1 refactor点guru,template method
2 geeksforgeeks

上一篇 下一篇

猜你喜欢

热点阅读