- 浏览: 29667 次
- 性别:
- 来自: 北京
设计模式之Template
Template定义:
定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.
其实Java的抽象类本来就是Template模式,因此使用很普遍.而且很容易理解和使用,我们直接以示例开始:
public abstract class Benchmark
{
/**
* 下面操作是我们希望在子类中完成
*/
public abstract void benchmark();
/**
* 重复执行benchmark次数
*/
public final long repeat (int count) {
if (count <= 0)
return 0;
else {
long startTime = System.currentTimeMillis();
for (int i = 0; i < count; i++)
benchmark();
long stopTime = System.currentTimeMillis();
return stopTime - startTime;
}
}
}
在上例中,我们希望重复执行benchmark()操作,但是对benchmark()的具体内容没有说明,而是延迟到其子类中描述:
public class MethodBenchmark extends Benchmark
{
/**
* 真正定义benchmark内容
*/
public void benchmark() {
for (int i = 0; i < Integer.MAX_VALUE; i++){
System.out.printtln("i="+i);
}
}
}
至此,Template模式已经完成,是不是很简单?看看如何使用:
Benchmark operation = new MethodBenchmark();
long duration = operation.repeat(Integer.parseInt(args[0].trim()));
System.out.println("The operation took " + duration + " milliseconds");
也许你以前还疑惑抽象类有什么用,现在你应该彻底明白了吧? 至于这样做的好处,很显然啊,扩展性强,以后Benchmark内容变化,我只要再做一个继承子类就可以,不必修改其他应用代码.
Template定义:
定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.
其实Java的抽象类本来就是Template模式,因此使用很普遍.而且很容易理解和使用,我们直接以示例开始:
public abstract class Benchmark
{
/**
* 下面操作是我们希望在子类中完成
*/
public abstract void benchmark();
/**
* 重复执行benchmark次数
*/
public final long repeat (int count) {
if (count <= 0)
return 0;
else {
long startTime = System.currentTimeMillis();
for (int i = 0; i < count; i++)
benchmark();
long stopTime = System.currentTimeMillis();
return stopTime - startTime;
}
}
}
在上例中,我们希望重复执行benchmark()操作,但是对benchmark()的具体内容没有说明,而是延迟到其子类中描述:
public class MethodBenchmark extends Benchmark
{
/**
* 真正定义benchmark内容
*/
public void benchmark() {
for (int i = 0; i < Integer.MAX_VALUE; i++){
System.out.printtln("i="+i);
}
}
}
至此,Template模式已经完成,是不是很简单?看看如何使用:
Benchmark operation = new MethodBenchmark();
long duration = operation.repeat(Integer.parseInt(args[0].trim()));
System.out.println("The operation took " + duration + " milliseconds");
也许你以前还疑惑抽象类有什么用,现在你应该彻底明白了吧? 至于这样做的好处,很显然啊,扩展性强,以后Benchmark内容变化,我只要再做一个继承子类就可以,不必修改其他应用代码.
发表评论
-
模式Visitor
2011-02-26 01:03 703设计模式之Visitor Visitor ... -
模式Strategy
2011-02-26 01:02 806设计模式之Strategy(策略) ... -
模式State
2011-02-26 01:02 655设计模式之State State的 ... -
模式Singleton
2011-02-26 01:02 730设计模式之Singleton(单态 ... -
模式Proxy
2011-02-26 01:01 662设计模式之Proxy(代理) 理解并使用设计模式,能够培养我们 ... -
模式Prototype
2011-02-26 01:01 704设计模式之Prototype(原型) 定义: 用原型实例指定创 ... -
模式Observer
2011-02-26 01:00 718设计模式之Observer Java深入到一定程度,就不可避免 ... -
模式Memento
2011-02-26 00:59 710设计模式之Memento(备忘 ... -
模式Mediator
2011-02-26 00:59 774设计模式之Mediator(中介者) Mediator定义: ... -
模式Interpreter
2011-02-26 00:58 811设计模式之Interpreter(解释器) Interpret ... -
模式Flyweight
2011-02-26 00:57 652设计模式之Flyweight(享元) Flyweight定义: ... -
模式Factory
2011-02-26 00:56 647设计模式之Factory 定义:提供创建对象的接口. 为何使用 ... -
模式Facade
2011-02-26 00:55 696设计模式之Facade(外观) Facade的定义: 为子系统 ... -
模式Decorator
2011-02-26 00:54 723设计模式之Decorator(油漆 ... -
模式Command
2011-02-26 00:52 616设计模式之Command Command模式是最让我疑惑的一个 ... -
模式Composite
2011-02-26 00:51 761设计模式之Composite(组合) Composite定义 ... -
模式Chain of Responsibility
2011-02-26 00:49 572设计模式之Chain of Respons ... -
模式Builder
2011-02-26 00:48 639设计模式之Builder Builder ... -
模式Bridge
2011-02-26 00:47 677设计模式之Bridge Bridge定义 : 将抽象和行为划 ... -
模式Adapter
2011-02-26 00:45 663设计模式之Adapter(适配 ...
相关推荐
策略模式(Template模式) 策略模式是设计模式中的一种 객체行为型模式,它定义了一系列算法,封装每一个算法,并使它们可以互相替换。策略模式使得算法可以独立于使用它的客户而变化。 概述 在软件开发中,经常...
模板方法模式(Template Pattern)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类重新定义或改变某些基本操作,但整体结构和顺序保持不变。在Java编程中,...
### 模板模式 (Template Pattern) #### 一、概述 模板模式是一种常用的行为设计模式,其核心在于定义了一个算法的框架,并允许子类提供具体的实现细节。通过这种方式,子类可以继承并重写某些方法,但整个算法的...
9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合...
模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象间的一系列基本操作,并在子类中实现这些操作的具体步骤。在模板模式中,一个抽象类公开定义了执行它的方法的方式,而将具体实现延迟到子类中...
模板模式(Template Pattern)是行为设计模式的一种,属于GOF(Gang of Four)设计模式中的结构型模式。这种模式主要用于定义算法的骨架,它将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的...
Template Method模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个...
Template模式是一种行为模式,旨在解决定义一个操作中的算法骨架,而将一些步骤延迟到子类中的问题。该模式可以定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 Visitor模式 Visitor模式是一种行为模式,...
### Eclipse Template与模式结合应用详解 #### 一、引言 在软件开发过程中,模板(Template)和设计模式(Design Pattern)是两个重要的概念。模板主要用于简化代码编写过程中的重复工作,提高编码效率;而设计...
Template Method模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### 3.2 Strategy模式 Strategy模式定义了一系列的算法,并将...
代理模式是一种设计模式,属于结构型模式之一,其主要目的是为其他对象提供一个代理,以控制对该对象的访问。在实际应用中,代理模式能够帮助我们实现如下的功能: 1. 远程代理:代理对象可以代表一个位于远程系统...
**模板模式(Template Pattern)**是一种行为设计模式,它在面向对象编程中扮演着重要的角色,尤其是在代码复用和保持代码结构一致性方面。该模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类...
Template模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### 3.2 Strategy模式 Strategy模式定义了一系列的算法,并将每一个...
Template Method模式定义了一个算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个算法...
Template Method模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中。它让子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法...
C++中的Template Method模式通常涉及到使用虚函数和抽象基类,子类通过重写特定的方法来定制算法的某些步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。在...
Template模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个算法...
Template方法模式定义了一个算法的骨架,而将一些步骤延迟到子类中。这种模式可以让子类不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法...