`
Flyingh
  • 浏览: 18927 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Template Method

 
阅读更多

模板方法模式:在一个方法中定义一个算法的骨架,而将一些实现步骤延迟到子类中。

模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

AbstractClass.java

package com.flyingh.abs;

public abstract class AbstractClass {
	public final void templateMethod() {
		step1();
		step2();
		step3();
		step4();
		hoop();
	}

	private void step1() {
		// TODO Auto-generated method stub
		System.out.println("step1");
	}

	public abstract void step2();

	public abstract void step3();

	private void step4() {
		// TODO Auto-generated method stub
		System.out.println("step4");
	}

	public void hoop() {
		// TODO Auto-generated method stub

	}
}

 ConcreteClassA.java

package com.flyingh.con;

import com.flyingh.abs.AbstractClass;

public class ConcreteClassA extends AbstractClass {

	@Override
	public void step2() {
		// TODO Auto-generated method stub
		System.out.println("a.step2()");
	}

	@Override
	public void step3() {
		// TODO Auto-generated method stub
		System.out.println("a.step3()");
	}

}

 ConcreteClassB.java

package com.flyingh.con;

import com.flyingh.abs.AbstractClass;

public class ConcreteClassB extends AbstractClass {

	@Override
	public void step2() {
		// TODO Auto-generated method stub
		System.out.println("b.step2()");
	}

	@Override
	public void step3() {
		// TODO Auto-generated method stub
		System.out.println("b.step3()");
	}

	@Override
	public void hoop() {
		// TODO Auto-generated method stub
		System.out.println("b.hoop()");
	}

}

 Client.java

package com.flyingh.client;

import com.flyingh.abs.AbstractClass;
import com.flyingh.con.ConcreteClassA;
import com.flyingh.con.ConcreteClassB;

public class Client {
	public static void main(String[] args) {
		AbstractClass abs = new ConcreteClassA();
		abs.templateMethod();
		System.out.println("*******************");
		AbstractClass abs2 = new ConcreteClassB();
		abs2.templateMethod();
	}
}

 程序运行结果如下:

step1
a.step2()
a.step3()
step4
*******************
step1
b.step2()
b.step3()
step4
b.hoop()
 
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    TemplateMethod.rar

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

    TemplateMethod.zip

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

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

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

    20-Template Method.rar

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

    模板方法模式(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 抽象方法...

    TemplateMethod 模式与代码重构

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

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

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

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

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

    Discovering Template Method Pattern in Google Android framework

    模板方法模式(Template Method Pattern)在Google Android框架中的应用是一个重要的设计模式实例,它允许开发者定义一个算法骨架,而将一些步骤延迟到子类中。这个模式的关键在于它定义了一个操作中的算法步骤,并...

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

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

    TemplateMethod Pattern.unitypackage

    TemplateMethod Pattern.unitypackage是一个模板方法模式的小栗子。

    template-method-demo 模板方法示例

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

    .NET设计模式(16):模版方法(TemplateMethod)

    摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对。如何更好的去抓住变化点,...

    C#中的TemplateMethod模式问题分析

    TemplateMethod模式是一种行为设计模式,它允许在定义算法框架的同时,允许子类为算法的特定步骤提供实现。这种模式在C#中广泛应用于创建可扩展的代码结构,使得父类可以控制算法的流程,而具体的操作则由子类来完成...

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

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

    【原创】Open close principle sample, state pattern, template method pattern

    在软件设计领域,设计模式是解决常见问题的可重用解决方案。它们是经过验证的、在特定上下文中高效的设计决策,被广泛应用于构建可维护和可扩展的软件系统。本篇将深入探讨“开闭原则”(Open Close Principle,OCP...

    C#模板方法模式(Template Method Pattern)实例教程

    模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在定义算法的框架时,将具体步骤延迟到子类中。这种模式的核心在于抽象类,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。子类可以...

    C++设计模式编程中Template Method模板方法模式的运用

    void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); } protected: virtual void PrimitiveOperation1() = 0; // 抽象方法 virtual void PrimitiveOperation2() = 0; // 抽象方法 ...

    C++设计模式笔记(03-01) – Template Method_模板方法(上)

    C++设计模式笔记(03-02) – Template Method_模板方法(下): https://blog.csdn.net/mofan6930/article/details/104383750 参考书籍:《设计模式:可复用面向对象软件的基础》 参考课程:《C++设计模式》-李建忠 ...

Global site tag (gtag.js) - Google Analytics