定义:
定义一个操作中的算法的框架,而将一些可变步骤留给子类实现。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。本质就是固定算法框架。
一般子类通过继承抽象类实现。
结构:行为型
解决何种问题
让父类控制子类方法的调用顺序
模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
钩子方法:
钩子就是给子类一个授权,让子类来决定模板方法的逻辑执行。就比如在炒西红柿鸡蛋的时候,由子类去决定是否要加调料。
优点:提高复用性、程序扩展性,符合开闭原则
缺点:增加系统复杂度
模式适合场景
- 一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。
- 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
- 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。
工厂方法是模板方法的一个特殊实现;
策略模式:封装算法,使不同算法相互替换,不影响应用层客户端的使用,可改变算法流程;
案例:
抽象模板类
具体类:
测试类:
参考链接:https://www.jianshu.com/p/800a44c1d9dd
https://baijiahao.baidu.com/s?id=1639309117007251878&wfr=spider&for=pc