`
wangkechao.dream
  • 浏览: 45726 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
352630cf-f670-3416-b946-55dec5cd787c
设计模式
浏览量:29902
社区版块
存档分类
最新评论

5.设计模式之模板模式

阅读更多

 

模板模式

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

我的理解模板模式,定义了方法执行的总体步骤,但每一步的具体实现由子类复写

关键点:模板方法用关键字final 需要复写的方法用abstract 修饰

 

Example: 考试:三步:发卷,做卷,交卷 现在我们实现考历史和考数学的情况

 

钩子:

模板模式中有一个钩子的功能,所谓钩子就是某些情下执行这个模板步骤,但在某些情况下又去执行另外的步骤,以我们的为例,当你考数学的时候,发完试卷,老师总要说好好做题不要剽窃,这个时候就可以用到钩子了

 

1. 模板类

public abstract class ExaminationTemplate {

	public boolean hook = false;// 钩子

	// 模板方法
	final void templatMethod() {
		// 老师有话说
		if (hook) {
			givePapers();
			teacherSay();
			doPapers();
			handInPapers();
		} else {
			givePapers();
			doPapers();
			handInPapers();
		}
	}

	// 发卷
	abstract void givePapers();

	// 做卷
	abstract void doPapers();

	// 交卷
	abstract void handInPapers();

	// 师说
	abstract void teacherSay();

}

 2.历史考试

public class HistoryExamination extends ExaminationTemplate{
	@Override
	void givePapers() {
		System.out.println("分发历史试卷");
	}
	@Override
	void doPapers() {
		System.out.println("做历史试卷");
	}
	@Override
	void handInPapers() {
		System.out.println("上交历史试卷");
	}
	@Override
	void teacherSay() {
		
	}
}

3. 数学考试

public class MathExamination extends ExaminationTemplate{
	@Override
	void givePapers() {
		System.out.println("分发数学试卷");
	}
	@Override
	void doPapers() {
		System.out.println("做数学试卷");
	}
	@Override
	void handInPapers() {
		System.out.println("上交数学试卷");
	}
	@Override
	void teacherSay() {
		System.out.println("好好做题不要抄");
	}
}

4. 运行方法

public class Main {

	public static void main(String[] args) {
		//考个历史吧
		HistoryExamination historyExamination = new HistoryExamination();
		historyExamination.templatMethod();
		System.out.println("--------------------");
		//考个数学吧,老师有话说哟
		MathExamination mathExamination = new MathExamination();
		mathExamination.hook=true;
		mathExamination.templatMethod();
		
	}
}

 

结果:

 

 分发历史试卷
做历史试卷
上交历史试卷
--------------------
分发数学试卷
好好做题不要抄
做数学试卷
上交数学试卷

 

参考源文档 <http://blog.csdn.net/s464036801/article/details/8468926> ,此处致谢

返回导航

 

 

 

 

 

 

分享到:
评论
1 楼 CrazzyLee 2014-01-23  
这个例子好像不太恰当啊..
原定义:

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

template类应该包含有abstractMethod以外(子类必须重写),应该有模板自身要完成的一些步骤,才更好的能阐述模板模式

相关推荐

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

    模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种...

    设计模式之模板方法模式

    模板方法模式是面向对象设计模式中的行为模式之一,它在Java等面向对象编程语言中有着广泛的应用。模板方法模式的主要思想是在一个抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现。这样,子类可以重写...

    设计模式_源代码大全.zip

    设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...

    java设计模式之模板模式

    在Java设计模式之模板模式中,我们将深入探讨这种模式的原理、应用场景以及如何在实际编码中实现。 模板模式的核心在于抽象类,这个抽象类定义了一个操作中的算法骨架,而将一些具体步骤的实现延迟到其子类中。这样...

    java.设计模式大作业 薪资交付系统

    在Java编程领域,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于构建可扩展、可维护的软件系统。在这个"薪资交付系统"的大作业中,我们可以预期会涉及多种设计模式,这些模式将帮助我们高效地组织代码...

    设计模式期末作业(要求5个以上的设计模式的模拟系统)

    这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    深入理解JavaScript系列.chm

    41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之状态模式 44.设计模式之桥接模式 45.代码复用模式(避免篇) 46.代码复用模式(推荐篇) 47.对象创建模式(上篇) 48.对象创建模式(下篇)

    设计模式之模板设计模式

    模板设计模式是面向对象设计模式的一种,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的代码库时。这个模式属于行为设计模式,主要用来在父类中定义一个操作流程的骨架,而将具体实现细节留给子类去...

    Java设计模式之模板方法模式.rar

    模板方法模式是面向对象设计模式中的行为模式之一,它在Java编程中有着广泛的应用。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定...

    设计模式模板+委托.pdf

    模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义一系列算法的族,每一种算法都由一个方法来实现。这种类型的设计模式属于行为模式。 模板模式的关键在于一个抽象类(或接口)定义了算法的主要...

    设计模式课程设计模板

    5. **代码实现**:对于每个设计模式,通常会有具体的编程语言(如Java、C#或Python)的代码示例,展示如何在实际编程中实现这些模式。这有助于加深理解,同时提升编程技能。 6. **设计模式的组合与选择**:在实际...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    深入浅出设计模式之模板方法模式

    ### 深入浅出设计模式之模板方法模式 #### 一、模板方法模式概述 设计模式是软件工程中一种非常重要的技术手段,它能够帮助我们解决常见的编程问题,并提高代码的可重用性、可扩展性和可维护性。模板方法模式是一...

    设计模式复习题.doc

    5. 设计模式的实现方式: - 使用继承来实现工厂模式 - 使用组合来实现抽象工厂模式 - 使用代理模式来控制对象的访问 - 使用适配器模式来封装对象并提供不同的接口 6. 设计模式的优点: - 提高代码的灵活性和可...

    Head.First.设计模式.中文版 1-8章

    1 欢迎来到设计模式世界:设计模式入门  模拟鸭子应用  Joe想到继承  利用接口如何?  软件开发的不变真理  分开变化和不变部分  设计鸭子的行为  测试鸭子的代码  动态地设置行为  封装行为的大局观  ...

Global site tag (gtag.js) - Google Analytics