模板方法模式是类的行为模式,准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的意思。

结构:

  模板方法模式中,抽象类负责定义整个的逻辑框架,而具体的逻辑步骤由具体的子类实现。具体的逻辑步骤称作基本方法(primitive method),将基本方法汇总的方法称为模板方法(template method)

  模板方法是顶级的行为定义,即该抽象类可以作什么功能是由模板方法定义的,但是其中的细节则是由其子类中的基本方法实现的。

  用一句谚语表示就是:条条大路通罗马

静态结构图:

  一天一个设计模式:模板方法模式

抽象模板(Abstract Template)角色:

   定义了一个或多个抽象操作,以便让子类实现,这些抽象操作称为基本方法,他们是顶级逻辑的组成步骤。

  定义并实现了一个模板方法,模板方法一般是一个具体实现,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟子类的实现,顶级逻辑也可能调用一些具体的方法。(不建议这样)

具体模板(Concrete Template)角色:

  实现父类定义的一个或多个抽象方法,这些实现方法是顶级逻辑的组成步骤。

  一个抽象模板可以有多个具体模板对其实现,且其实现的细节均可不同。

代码:

抽象模板角色类:

public abstract class AbstractTemplate {
    /**
     * 模板方法
     */
    public void templateMethod(){
        //调用基本方法
        abstractMethod();
        hookMethod();
        concreteMethod();
    }
    /**
     * 基本方法的声明(由子类实现)
     */
    protected abstract void abstractMethod();
    /**
     * 基本方法(空方法)
     */
    protected void hookMethod(){}
    /**
     * 基本方法(已经实现)
     */
    private final void concreteMethod(){
        //业务相关的代码
    }
}
View Code

相关文章:

  • 2018-09-24
  • 2021-07-17
  • 2022-03-09
  • 2021-05-22
  • 2021-05-19
猜你喜欢
  • 2022-03-01
  • 2021-11-03
  • 2021-06-02
  • 2021-11-12
  • 2019-06-04
  • 2021-10-19
相关资源
相似解决方案