`

Template Method(模板方法)---类行为型模式

阅读更多

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

一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。

通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许子类改变这些具体步骤以满足它们各自的需求。

 

模板方法应用于下列情况:

1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

2、各子类中公共的行为应被提取出来并集中到一个公共父类中避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

3、控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。

 

模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为。、

模板方法导致一种反向的控制结构,这种结构有时被称为“好莱坞法则”,即“别找我们,我们找你”。这指的是一个父类调用一个子类的操作,而不是相反。

 

钩子操作(hook operations):它提供了缺省的行为,子类可以在必要时进行扩展。一个钩子操作在缺省操作通常是一个空操作。

 

定义模板方法的一个重要目的是尽量减少一个子类具体实现该算法时必须重定义的那些原语操作的数目。需要重定义的操作越多,客户程序就越冗长。

 

Factory Method模式常被模板方法调用。DoCreateDocument就是一个Factory Method,它由模板方法OpenDocument调用。

Strategy模式:模板方法使用继承来改变算法的一部分。Strategy模式使用委托来改变整个算法。

分享到:
评论

相关推荐

    template-method-demo 模板方法示例

    模板方法设计模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们在父类中定义一个算法的骨架,而将一些步骤延迟到子类中。子类可以重写某些步骤来实现定制化的行为,但整体算法结构保持...

    设计模式C++学习之模板方法模式(Template Method)

    模板方法模式(Template Method)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式在C++编程中有着...

    Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现

    模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在C++这样的面向对象编程语言中。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的...

    c++设计模式-行为型模式-模板方法模式

    c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...

    C++设计模式课件3_Template Method_模板方法.pdf

    模板方法模式(Template Method Pattern)是一种行为型设计模式,它允许我们定义算法的骨架,并将部分步骤推迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 #### 模式背景...

    模板方法模式----设计模式系列

    模板方法模式是面向对象设计模式的一种,它在行为模式中占据重要地位。此模式的核心思想是定义一个操作的框架,允许子类在这个框架内自定义具体的行为。这为代码复用和实现相同逻辑的不同实现提供了方便,同时也遵循...

    设计模式--模板方法模式java例子

    模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...

    Template(模板模式)

    模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象间的一系列基本操作,并在子类中实现这些操作的具体步骤。在模板模式中,一个抽象类公开定义了执行它的方法的方式,而将具体实现延迟到子类中...

    C++设计模式代码资源3_Template Method_模板方法.zip

    "模板方法"(Template Method)是设计模式中的一个经典概念,它属于行为设计模式,主要用在父类中定义一个算法的框架,允许子类在这个框架内重定义特定的步骤。这个模式通常用于代码复用和保持代码结构的一致性。 ...

    设计模式-模板方法模式ppt

    - **抽象类(Abstract Class)**:包含一个或多个抽象方法,并且有一个模板方法(template method)。模板方法通常被声明为final,这意味着它不能被子类覆盖。 - **具体操作(Concrete Operations)**:在抽象类中...

    设计模式专题之(十三)模板模式---设计模式模板模式示例代码(python--c++)

    模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义执行算法的框架,而将一些步骤延迟到子类中。这样,你就能创建一个可复用的框架,将具体步骤留给子类来实现。这个模式的核心思想是抽象类定义了一...

    模板方法模式(TemplateMethod)原理图

    模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。 具体来说,模板方法模式的关键特点包括: 抽象类:在抽象类中定义一个模板方法,该方法给出了算法的框架。 具体...

    java设计模式-模板模式

    3. **模板方法(Template Method)**:这是在抽象类中定义的方法,它调用了一个或多个钩子方法(即抽象方法或可选的具体方法)。模板方法执行整体算法的顺序,并且通常在最后调用钩子方法以完成算法的定制部分。 4....

    TemplateMethod 模式与代码重构

    TemplateMethod(模板方法)设计模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们在抽象类中定义一个算法的框架,同时允许子类在不改变算法结构的情况下重写算法中的特定步骤。通过...

    设计模式-模板方法模式(讲解及其实现代码)

    在这个例子中,`AbstractClass` 是抽象类,`templateMethod` 是模板方法,`step1`、`step2` 和 `step3` 是基本方法,其中 `step2` 提供了一个默认实现,`step3` 是一个钩子方法,子类可以选择是否覆盖。`Concrete...

    模版方法模式TemplatePattern

    模板方法模式(Template Pattern)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类重新定义或改变某些基本操作,但整体结构和顺序保持不变。在Java编程中,...

    3 模板模式-课程内容.rar

    2. **模板模式的结构**:详细阐述抽象类与具体类之间的关系,包括模板方法(Template Method)和具体方法(Concrete Methods)的定义,以及钩子方法(Hook Methods)的概念和用途。 3. **模板模式的实现**:通过...

    20-Template Method.rar

    模板方法(Template Method)设计模式是一种行为型设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们定义一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可...

    设计模式_行为型_模板方法模式.md

    - **模板方法(Template Method)**:调用抽象类中的其他方法来定义算法的步骤。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 2. **具体类(ConcreteClass)**:实现抽象类中定义的...

    设计模式之模板方法模式Java实现和类设计图

    模板方法模式是软件设计模式中的一种行为模式,它在面向对象设计中扮演着重要的角色,尤其是在代码复用和保持代码结构整洁方面。该模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一...

Global site tag (gtag.js) - Google Analytics