zoukankan      html  css  js  c++  java
  • 模板方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    洛谷#P5652#基础博弈练习题
    hgoi#20191112
    hgoi#20191111
    hgoi#20191109
    洛谷#P3674#小清新人渣的本愿
    hgoi#20191108
    hgoi#20191107
    树上差分
    树链剖分(树剖)
    LCA(最近公共祖先)问题
  • 原文地址:https://www.cnblogs.com/cye9971-/p/10588568.html
Copyright © 2011-2022 走看看