主要是用来解决复用和扩张两个问题
模板模式,全称模板方法模式,英文名Template Method Design Patterm。模板方法模式在一个方法中定义算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类不改变算法整体结构的情况下,重新定义算法中的某些步骤。
这里的"算法",可以理解为业务逻辑,这里的算法骨架就是“模板”,包含算法骨架的方法也称之为模板方法,这也就是模板方法的由来。
由上面可以看出。模板模式包含两部分,一部分是提供模板方法和扩展点的父类(AbstractClass),另一部分是实现扩展点的子类(ConcreteClasses)。
进一步解读的话,就是把业务逻辑中不变的行为封装到了父类的模板方法中,把可变部分抽象成为扩展点。子类继承父类,重写扩展点。
这个设计模式理解起来比较容易,简单的代码实现也比较容易,代码实现如下:
/**
* 模板类
*/
public abstract class AbstractClass {
public final void templateMethod() { //模板方法
//...
method1();
// ...
method2();
//...
}
protected abstract void method1(); //扩展点1
protected abstract void method2(); //扩展点2
}
/**
* 具体实现类1
*
* 实现扩展点
*/
public class ConcreteClass1 extends AbstractClass{
@Override
protected void method1() {
//……省略实现代码
}
@Override
protected void method2() {
//……省略实现代码
}
}
/**
* 具体实现类2
*
* 实现扩展点
*/
public class ConcreteClass2 extends AbstractClass{
@Override
protected void method1() {
//……省略实现代码
}
@Override
protected void method2() {
//……省略实现代码
}
}
这只是对模板方法模式的一个简单理解和实现。后续还对对其进行补充