模板方法设计模式
模板方法模式非常简单,仅仅使用了 java 的继承机制,但它是一个应用非常广泛的模板其中 AbstractClass 叫做抽象模板,它的方法分为两类 基本方法 和 模板方法
- 基本方法
基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。 - 模板方法
可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度。(一般为了防止恶意操作方法都加上final
关键字,不允许被重写。
- 首先创建一个抽象魔板类
public abstract class AbstractClass{
//基本方法
protected abstract void domethod1();
//基本方法
protected abstract void domethod2();
//模板方法
public final void templateMethod(){
/*
*调用基本方法完成相关逻辑
*/
this.domethod1();
this.domethod2();
}
}
//补充 可以在抽象类中添加个钩子方法。控制算法流程。
- 创建一个子类集成抽象类。重写方法;
public class Template extends AbstractClass {
@Override
protected void domethod1() {
System.out.println("Template domethod1");
}
@Override
protected void domethod2() {
System.out.println("Template domethod2");
}
}
抽象模板中的基本方法尽量设计为 protected 类型,符合迪米特法则,不需要暴露的属性活方法尽量不要设置为 protected 类型。
模板方法的优点
- 封装不变部分,扩展可变部分。
- 提起公共部分代码,便于维护。
- 行为由父类控制,子类实现。