上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
设计模式之Template
作者:未知 申领版权
2011年08月22日 共有 1511 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    Template模板模式定义:
    定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.
    使用Java的抽象类时,就经常会使用到Template模式,因此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模式已经完成,是不是很简单?
    我们称repeat方法为模板方法, 它其中的benchmark()实现被延迟到子类MethodBenchmark中实现了,
    看看如何使用:
    Benchmark operation = new MethodBenchmark();
    long duration = operation.repeat(Integer.parseInt(args[0].trim()));
    System.out.println("The operation took " duration " milliseconds");
    
    也许你以前还疑惑抽象类有什么用,现在你应该彻底明白了吧? 至于这样做的好处,很显然啊,扩展性强,以后Benchmark内容变化,我只要再做一个继承子类就可以,不必修改其他应用代码.

    

 

相关新闻

每一个程序员要遵守的一些优秀编程风格
《VB程序设计基础》选择题
设计模式之Iterator
设计模式之Visitor
设计模式之Interpreter(解释器)
设计模式之Mediator(中介者)
设计模式之Strategy(策略)
设计模式之State
设计模式之Command
设计模式之Chain of Responsibility(职责链)

您可能对这些感兴趣  

《VB程序设计基础》选择题
设计模式之Iterator
设计模式之Visitor
设计模式之Interpreter(解释器)
设计模式之Mediator(中介者)
设计模式之Strategy(策略)
设计模式之State
设计模式之Command
设计模式之Chain of Responsibility(职责链)
设计模式之Observer

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》