模板方法
Posted cye9971-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板方法相关的知识,希望对你有一定的参考价值。
在模板模式中,一个抽象类公开定义了执行它的方法/模板。
模板方法定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改不一个算法的结构,即可重定义该算法的某些特定步骤。
抽象模板是一个抽象类,定义了若干个方法以表示一个算法的各个步骤(若干个方法中有抽象方法也有非抽象方法),抽象方法(原语操作)。
模板方法定义了算法的骨架。
具体模板是抽象模板的子类,实现抽象模板中的抽象方法(原语操作)。
模板方法:一个模板方法定义了在抽象类中的、把基本操作方法组合在一起形成一个总算法或一个总行为的方法
基本方法:实现算法各个步骤的方法。抽象方法(AbstractMethod)具体方法(ConcreteMethod)
钩子方法:"挂钩方法"和空方法。
钩子方法是抽象模板中定义的具体方法,给出了空实现或默认的实现,并允许子类重写这个具体方法。
如果不使用钩子方法,就需要将具体方法用final修饰,要求子类必须继承,不可重写该方法。
钩子方法的作用是对模板方法中的某些步骤进行“挂钩”,以确定在什么条件下执行模板方法中的那些算法步骤。
模版方法的优点:1、在抽象模板定义模板方法给出算法步骤,不限制步骤的细节,具体模板实现算法细节不会改变整个算法的骨架
2、在抽象模板方法中,可以通过钩子方法对某些算法步骤进行挂钩。
使用场景: 1、给出一个算法的步骤,并把具体的实现步骤交给子类来实现
2、需要对代码进行重构,将公共类集中到一个共同的父类中避免代码重复。
以上是关于模板方法的主要内容,如果未能解决你的问题,请参考以下文章
模板方法模式(Template Method Pattern)