模板方法

在模板模式中,一个抽象类公开定义了执行它的方法/模板。

模板方法定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改不一个算法的结构,即可重定义该算法的某些特定步骤。

抽象模板是一个抽象类,定义了若干个方法以表示一个算法的各个步骤(若干个方法中有抽象方法也有非抽象方法),抽象方法(原语操作)。

模板方法定义了算法的骨架。

具体模板是抽象模板的子类,实现抽象模板中的抽象方法(原语操作)。

模板方法:一个模板方法定义了在抽象类中的、把基本操作方法组合在一起形成一个总算法或一个总行为的方法

基本方法:实现算法各个步骤的方法。抽象方法(AbstractMethod)具体方法(ConcreteMethod)

钩子方法:"挂钩方法"和空方法。

钩子方法是抽象模板中定义的具体方法,给出了空实现或默认的实现,并允许子类重写这个具体方法。

如果不使用钩子方法,就需要将具体方法用final修饰,要求子类必须继承,不可重写该方法。

钩子方法的作用是对模板方法中的某些步骤进行“挂钩”,以确定在什么条件下执行模板方法中的那些算法步骤。

模版方法的优点:1、在抽象模板定义模板方法给出算法步骤,不限制步骤的细节,具体模板实现算法细节不会改变整个算法的骨架

                              2、在抽象模板方法中,可以通过钩子方法对某些算法步骤进行挂钩。

使用场景:  1、给出一个算法的步骤,并把具体的实现步骤交给子类来实现

                     2、需要对代码进行重构,将公共类集中到一个共同的父类中避免代码重复。

原文地址:https://www.cnblogs.com/cye9971-/p/10588568.html