`
Jonny-java
  • 浏览: 13185 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

模板方法模式Template Method

阅读更多

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

模式中的角色

    抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
    具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

模式模式优缺点:

1.)优点

模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。子类实现算法的某些细节,有助于算法的扩展。通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。

2.)缺点

每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。

3.)适用场景

在某些类的算法中,用了相同的方法,造成代码的重复。控制子类扩展,子类必须遵守算法规则。
分享到:
评论

相关推荐

    模板方法模式(Template Method Pattern)详解 1. 什么是模板方法模式? 2. 为什么需要模板方法模式? 3. 模板方法模式的核心概念 3.1 模板方法(Template Met

    模板方法模式(Template Method Pattern)详解 1. 什么是模板方法模式? 2. 为什么需要模板方法模式? 3. 模板方法模式的核心概念 3.1 模板方法(Template Method) 3.2 具体方法(Concrete Method) 3.3 抽象方法...

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

    在这个例子中,`AbstractClass`是模板类,定义了`templateMethod`模板方法,它调用了`primitiveOperation1`、`primitiveOperation2`以及组件(Component)的`operation`方法。`ConcreteComponentA`和`...

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

    在这个例子中,`AbstractClass`定义了`templateMethod`模板方法,其中`step1()`是具体实现,而`step2()`和`step3()`作为抽象方法由`ConcreteClass1`和`ConcreteClass2`这两个具体类来实现。这样,不同的具体类可以...

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

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

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合...

    template-method-demo 模板方法示例

    在"template-method-demo"这个示例中,我们可以预见到它将展示如何在Java中应用模板方法模式。这个压缩包可能包含以下内容: 1. 一个抽象类(例如:`AbstractClass`),它定义了模板方法。在这个类中,可能会有一个...

    模版方法模式TemplatePattern

    2. 模板方法(Template Method):这是一个具体的方法,定义了算法的骨架。这个方法由抽象类实现,它调用了基本方法来执行特定的步骤。模板方法通常声明为final,防止子类重写其结构。 3. 基本方法(Primitive ...

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

    ### C++设计模式课件3_Template Method_模板方法 #### 模板方法设计模式解析 模板方法模式(Template Method Pattern)是一种行为型设计模式,它允许我们定义算法的骨架,并将部分步骤推迟到子类中实现。这种模式...

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

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

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

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

    模板方法模式案例代码

    4. **模板方法(Template Method)**:定义了算法的基本步骤,调用各个步骤的方法,可以是抽象的也可以是具体的方法。 下面是一个简单的Java模板方法模式示例,以饮料制作过程为例: ```java public abstract ...

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

    在这个例子中,`templateMethod`是模板方法,它在`AbstractClass`中定义了算法的整体结构,而`step1`是一个需要子类实现的抽象方法,`step2`是可选的默认实现,`step3`是不能被子类重写的最终方法。 模板方法模式的...

    C++设计模式之模板方法模式(TemplateMethod)

    模板方法模式是面向对象设计模式中的一种,它属于行为模式,主要用来定义对象间的一系列操作顺序,而将一些步骤的实现延迟到子类中。这样可以使得子类不改变算法的结构即可重定义该算法的某些特定步骤,从而实现多态...

    ios-iOS模板方法模式使用心得demo.zip

    4. 模板方法(Template Method):定义了算法的基本结构,包括一系列步骤,这些步骤可能包含直接调用的钩子方法。模板方法通常是不可变的,确保算法的总体流程不会被子类改变。 在iOS应用开发中,模板方法模式的...

    TemplateMethod.rar

    标题“TemplateMethod.rar”暗示了这个压缩包包含的是关于Qt平台上实现模板方法设计模式的示例代码。Qt是一个跨平台的应用程序开发框架,常用于创建GUI程序,但也可用于非图形化的后台服务。 描述中的“模板方法...

    模板方法模式例子

    2. 模板方法(TemplateMethod):这是核心方法,定义了算法的整体结构,调用了抽象方法和具体方法。 3. 具体方法(ConcreteMethod):这些方法在抽象类中已经完全实现,子类不需要关心这部分代码。 例如,假设我们...

    设计模式之模板方法模式

    3. **模板方法(Template Method)**:在抽象类中定义的,它是一个具体方法,负责组织和控制算法的流程。模板方法通常包含了业务逻辑的主要流程,并调用了其他基本方法。 4. **钩子方法(Hook Methods)**:可选的...

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

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

    Template(模板模式)

    在模板模式中,一个抽象类公开定义了执行它的方法的方式,而将具体实现延迟到子类中。这种方式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板模式的核心结构包括抽象类(AbstractClass)...

    TemplateMethod.zip

    这个压缩包"TemplateMethod.zip"包含了关于C++实现模板方法设计模式的代码示例。 模板方法模式的核心思想是定义一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重定义该算法...

Global site tag (gtag.js) - Google Analytics