【设计模式之禅】模板方法模式
发布日期:2021-05-10 05:48:25 浏览次数:26 分类:精选文章

本文共 1427 字,大约阅读时间需要 4 分钟。

模板方法模式

模板方法模式(Template Method Pattern)是一种软件设计模式,用于定义算法的框架,将算法的不变部分提取到父类中,而可变部分则留给子类去实现。通过模板方法,子类可以在不修改父类结构的情况下,重定义算法的一部分。

模板方法模式的核心思想是:抽象模板类中定义一个操作的框架,框架中包含了一些被调用但需要子类实现的基本方法。模板方法则是调用这些基本方法,完成算法的具体逻辑实现。模板方法通常被标记为final,以防止它被子类重写,从而确保模板方法的逻辑不变。

在Java中,模板方法模式通常通过继承抽象模板类来实现。抽象模板类决定了算法的总体结构,而具体的实现则由其子类完成。以下是模板方法模式的示例代码:

public abstract class AbstractClass {    protected abstract void doSomething();    protected abstract void doAnything();    public final void templateMethod() {        // 算法的核心逻辑        this.doSomething();        this.doAnything();    }}public class ConcreteClass1 extends AbstractClass {    @Override    protected void doSomething() {        // 具体实现    }    @Override    protected void doAnything() {        // 具体实现    }}public class ConcreteClass2 extends AbstractClass {    @Override    protected void doSomething() {        // 具体实现    }    @Override    protected void doAnything() {        // 具体实现    }}public static void main(String[] args) {    AbstractClass class1 = new ConcreteClass1();    AbstractClass class2 = new ConcreteClass2();    class1.templateMethod();    class2.templateMethod();}

模板方法模式的主要优点包括:

  • 封装不变的部分:将算法中的不变部分(如算法的大框架)封装到模板方法中,避免重复代码。
  • 增加可扩展性:允许子类在不修改父类结构的情况下,扩展算法的部分功能。
  • 遵循迪米特法则:子类仅关注与自身相关的业务逻辑,减少了对父类的依赖。
  • 模板方法模式的适用场景包括:

    • 在多个子类共享相同的基本算法结构,但每个子类可能会有不同的实现细节。
    • 对于需要重构的代码,提取算法的通用部分成为模板方法,其他部分由子类自定义。
    • 适用于需要通过某些条件来选择执行不同的算法实现的情况。

    模板方法模式在实际开发中的应用非常广泛,常用于需要继承和多态性的场景,特别是在需要灵活扩展算法行为但保持算法整体结构不变的应用中。

    上一篇:【设计模式之禅】建造者模式
    下一篇:【Dubbo】在开发联调的时候需要做什么?

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月27日 10时36分10秒