`
yxwang0615
  • 浏览: 561006 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

设计模式之Template

阅读更多

模板方法设计模式

 

定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。

父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。

 

使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。

 

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

各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。

如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:

1、可以在API中不体现出你的模板方法;

2、可以将你的模板方法置为final就可以了。

demo:

父类:

public abstract class BenchMark {
	public final long repeat(int count){
		long time = 0;
		if(count < 0){
			return 0;
		}else {
			long startTime = System.currentTimeMillis();
			for(int i =0; i<count;i++){
				method();
			}
			long endTime = System.currentTimeMillis();
			time = endTime - startTime;
		}
		return time;
	}
	public abstract void method();
}

 子类:

public class BenchMarkMethod extends BenchMark{

	@Override
	public void method() {

		try {
			Thread.sleep(2000);
			System.out.println("sleep for 2s");
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		BenchMark bench = new BenchMarkMethod();
		long time = bench.repeat(3);
		System.out.println(time);
	}/**OutPrint:
	 * sleep for 2s
	 * sleep for 2s
     * sleep for 2s
     * 6000
	 */
}

 

使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。

 

 

参考:http://wenku.baidu.com/view/b3084581d4d8d15abe234e0e.html

分享到:
评论

相关推荐

    JAVA设计模式chm文档

    设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计...

    设计模式文档 chm

    设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计...

    GoF 23种设计模式的详解与应用

    详细介绍GoF设计模式以及应用... 创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态)....行为模式:设计模式之Template,设计模式之Memento(备忘机制).................

    二十三种设计模式【PDF版】

    设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...

    C#设计模式之Template模板方法模式实现ASP.NET自定义控件 密码强度检测功能

    C#设计模式之Template模板方法模式实现ASP.NET自定义控件密码强度检测功能 Template模板方法模式是指定义一个操作中的算法骨架,将一些步骤延迟到子类中执行。这样可以让子类在不改变算法结构的情况下重新定义算法...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    Java设计模式之禅

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

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

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

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

    23种面向对象设计模式

    文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...

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

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

    设计模式那点事

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...

    设计模式之模板方法(Template)

    模板方法设计模式是一种行为设计模式,它...模板方法设计模式是设计模式中的基础模式之一,理解并正确使用它可以提高软件的灵活性、可维护性和扩展性。在实际开发中,我们应该根据需求灵活运用,以达到最佳的设计效果。

    您的设计模式.pdf。

    "设计模式" 在软件开发中,设计模式是一种解决特定问题的通用方法。它可以帮助开发者编写更加灵活、可维护、可扩展的代码。本书《您的设计模式》对设计模式进行了详细的讲解,涵盖了策略模式、代理模式、单例模式、...

    Head.First设计模式_PDF

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、Template Method、iterator、Composite、State、proxy。最后三章比较...

    C#设计模式PDF 电子书

    《C#设计模式PDF 电子书》是一本专注于C#编程语言中设计模式的应用和解析的书籍,2005年04版意味着它在设计模式领域的应用尚处于早期阶段,但仍然具有很高的学习价值。设计模式是软件工程中经过实践验证的、解决常见...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...

    《Java设计模式》课后答案-刘伟.rar

    行为型设计模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、状态(State)、职责链(Chain of Responsibility)、解释器...

    Django的MVT设计模式(Model-View-Template)示例代码

    本篇详细总结软件开发所遵循的MVC (Model-View-Controller, 模型-视图-控制器) 设计模式以及Django的MVT设计模式(Model-View-Template)如何遵循这种设计理念。Django Model(模型), URL(链接), View(视图) 和Template...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

Global site tag (gtag.js) - Google Analytics