设计模式模板方法模式

编程

对于模板设计模式,最重要的就是要理解模板方法, 模板方法将算法定义成一组步骤, 其中任何步骤都可以是抽象的, 由子类负责实现. 这样能够保证算法结构保持不变, 同时由子类提供部分实现.

详细描述

类图如下:

其中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

回到顶部