设计模式模板方法模式
对于模板设计模式,最重要的就是要理解模板方法, 模板方法将算法定义成一组步骤, 其中任何步骤都可以是抽象的, 由子类负责实现. 这样能够保证算法结构保持不变, 同时由子类提供部分实现.
详细描述
类图如下:
其中templateMethod()
就是模板方法, 而在模板方法中会使用primitiveOperation1()和primitiveOperation2()两个方法. 这两个方法会在不同的子类中有不同的实现. 具体代码如下:
abstract class AbstractClass { // 模板方法定义为final, 防止子类进行修改
final void tempalteMethod() {
primitiveOperation1();
primitiveOperation2();
concreteOperation();
hook();
}
}
// 这两个方法定义为抽象的,子类负责具体实现
abstract void primitiveOperation1();
abstract void primitiveOperation2();
// concreateOperation方法定义为final, 防止子类进行修改
final void concreteOperation() {
// 具体实现
};
// 钩子方法, 可以留空,也可以有默认实现. 子类可以决定是否要进行覆盖.
void hook() {}
抽象类的代码如上, 模板方法中对应的关注点在代码注释中有详细说明. 代码中有hook()方法, 又被称作钩子方法. 钩子方法能够帮助我们修改模板方法中具体的执行逻辑. 因为hook()方法前面没有加入abstract关键字, 所以子类可以选择不实现.
具体实现
模板方法模式在很多框架中都有具体的使用, 比如Spring, JDK源码中的排序等. 这个模式让框架控制如何做事情, 而由使用框架的人来指定框架算法中每个步骤的细节.
以上是 设计模式模板方法模式 的全部内容, 来源链接: utcz.com/z/513011.html