欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 【设计模式】模板方法模式

【设计模式】模板方法模式

2025/9/26 22:04:28 来源:https://blog.csdn.net/cgq_cgq/article/details/146908839  浏览:    关键词:【设计模式】模板方法模式
  • 模板方法模式是 行为设计模式 ,他在一个方法中定了流程骨架,将某些特定的步骤延迟到子类进行实现,该模式允许子类在不改变流程的情况下,重新定义一些特定的方法

    父类控制流程,子类负责具体的实现

核心组件

  • 抽象模板类
    • 定义模板方法
    • 生命抽象操作
    • 包含默认实现
public abstract  class TemplateAbstract{public void printValue(int a,int b){int value = execute(a,b);System.out.println("execute value = "+value);}protected abstract int execute(int a,int b);
}
  • 具体子类
    • 继承抽象父类,并实现抽象方法,
    • 不改变流程结构
public class Add extends TemplateAbstract{@Overridepublic int execute(int a,int b){return a+b;}}

类图

在这里插入图片描述

  • Client:调用类
  • TemplateAbstract :抽象模板类
  • Add :实现类-加法
  • Subtraction :实现类-减法
public class Client {public static void main(String[] args) {TemplateAbstract add = new Add();TemplateAbstract sub = new Subtraction();TemplateAbstract mul = new Multiplication();add.printValue(1,2);sub.printValue(3,4);mul.printValue(5,6);}}public abstract  class TemplateAbstract{public void printValue(int a,int b){int value = execute(a,b);System.out.println("execute value = "+value);}protected abstract int execute(int a,int b);
}public class Add  extends TemplateAbstract{@Overrideprotected int execute(int a, int b) {return a+b;}
}public class Subtraction extends TemplateAbstract{@Overrideprotected int execute(int a, int b) {return a-b;}
}public class Multiplication extends TemplateAbstract {@Overrideprotected int execute(int a, int b) {return a*b;}
}

模式的优缺点

优点

  • 代码复用最大化,将公共的流程抽象到父类,避免子类重复编写相同代码
  • 明确业务流程性,通过将不建议修改的方法 使用 final 进行修饰,防止破坏核心流程逻辑

缺点

  • 耦合性过大,通过继承父类来完成流程,如果父类添加了额外的抽象方法,会影响所有子类
  • 流程不透明:对于第一次重新相关子类的人来说需要了解下整体运行流程

总结

模板方法模式类似于流水线工作,指定了标准的流程又提供了个性化的空间,模板方法模式是比较常用的设计模式在主流框架中都能找到相关的使用,掌握模板方法可以让您在代码规范和灵活性之间找到相对的平衡

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词