`

模板方法模式TemplateMethod

 
阅读更多

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

 

2. 结构图


AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。
ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成与特定子类相关的功能。

 

3. 本质
模板方法模式的本质:固定算法骨架。

 

4. Code Demo

AbstractClass.java

package org.fool.templatemethod;

public abstract class AbstractClass {
	public void template() {
		this.method1();
		this.method2();
		this.method3();
	}

	public abstract void method1();

	public abstract void method2();

	public abstract void method3();

}

 

ConcreteClass.java

package org.fool.templatemethod;

public class ConcreteClass extends AbstractClass {
	@Override
	public void method1() {
		System.out.println("step 1");
	}

	@Override
	public void method2() {
		System.out.println("step 2");
	}

	@Override
	public void method3() {
		System.out.println("step 3");
	}
}

 

Client.java

package org.fool.templatemethod;

public class Client {
	public static void main(String[] args) {
		AbstractClass ac = new ConcreteClass();

		ac.template();
	}
}

 
 

  • 大小: 36.8 KB
分享到:
评论

相关推荐

    设计模式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`),它定义了模板方法。在这个类中,可能会有一个...

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

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

    模版方法模式TemplatePattern

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

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

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

    模板方法模式案例代码

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

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

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

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

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

    模板方法模式例子

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

    设计模式之模板方法模式

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

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

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

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

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

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

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

    python 模板方法模式(示例)

    设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...

    TemplateMethod.rar

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

    11.设计模式-模板方法模式1

    `operation()` 方法中包含了一些具体的步骤,如 `step1` 和 `step2`,以及一个抽象方法 `templateMethod()`。`SubClass` 和 `SubClass1` 是 `AbstractClass` 的子类,它们重写了 `templateMethod()` 方法,提供了...

    工厂模式及模板方法模式深度思考

    文件名"templatemethod"和"factory"暗示了博主可能分别展示了这两种模式的实例代码或者类结构。 总结来说,工厂模式和模板方法模式是面向对象设计的重要工具,它们可以帮助我们更好地组织代码,降低耦合,提高代码...

Global site tag (gtag.js) - Google Analytics