`
lovang
  • 浏览: 29667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • leayaya: 建议示例再做一下处理,比如实现和对象的操作换一下
    模式Bridge

模式Template

    博客分类:
  • java
阅读更多
设计模式之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模式

    策略模式(Template模式) 策略模式是设计模式中的一种 객체行为型模式,它定义了一系列算法,封装每一个算法,并使它们可以互相替换。策略模式使得算法可以独立于使用它的客户而变化。 概述 在软件开发中,经常...

    模版方法模式TemplatePattern

    模板方法模式(Template Pattern)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类重新定义或改变某些基本操作,但整体结构和顺序保持不变。在Java编程中,...

    模板模式Template Pattern

    ### 模板模式 (Template Pattern) #### 一、概述 模板模式是一种常用的行为设计模式,其核心在于定义了一个算法的框架,并允许子类提供具体的实现细节。通过这种方式,子类可以继承并重写某些方法,但整个算法的...

    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(模板模式)

    模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象间的一系列基本操作,并在子类中实现这些操作的具体步骤。在模板模式中,一个抽象类公开定义了执行它的方法的方式,而将具体实现延迟到子类中...

    php设计模式 Template (模板模式)

    模板模式(Template Pattern)是行为设计模式的一种,属于GOF(Gang of Four)设计模式中的结构型模式。这种模式主要用于定义算法的骨架,它将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的...

    C++设计模式.pdf

    Template Method模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个...

    设计模式原理与应用之行为模式.pptx

    Template模式是一种行为模式,旨在解决定义一个操作中的算法骨架,而将一些步骤延迟到子类中的问题。该模式可以定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 Visitor模式 Visitor模式是一种行为模式,...

    Eclipse Template与模式

    ### Eclipse Template与模式结合应用详解 #### 一、引言 在软件开发过程中,模板(Template)和设计模式(Design Pattern)是两个重要的概念。模板主要用于简化代码编写过程中的重复工作,提高编码效率;而设计...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    Template Method模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### 3.2 Strategy模式 Strategy模式定义了一系列的算法,并将...

    结构型模式之代理模式(Proxy)

    代理模式是一种设计模式,属于结构型模式之一,其主要目的是为其他对象提供一个代理,以控制对该对象的访问。在实际应用中,代理模式能够帮助我们实现如下的功能: 1. 远程代理:代理对象可以代表一个位于远程系统...

    Template模式

    **模板模式(Template Pattern)**是一种行为设计模式,它在面向对象编程中扮演着重要的角色,尤其是在代码复用和保持代码结构一致性方面。该模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类...

    C++ 设计模式 (C++ 设计模式精解 + 代码实现)

    Template模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### 3.2 Strategy模式 Strategy模式定义了一系列的算法,并将每一个...

    23种设计模式(C++)

    Template Method模式定义了一个算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个算法...

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

    Template Method模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中。它让子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    C++中的Template Method模式通常涉及到使用虚函数和抽象基类,子类通过重写特定的方法来定制算法的某些步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。在...

    GoF 23种设计模式解析附C++实现源码(2nd Edition)

    Template模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列的算法,并将每一个算法...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    Template方法模式定义了一个算法的骨架,而将一些步骤延迟到子类中。这种模式可以让子类不改变一个算法的结构即可重定义该算法的某些特定步骤。 #### Strategy模式 Strategy模式定义了一系列算法,并将每一个算法...

Global site tag (gtag.js) - Google Analytics