Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 比较Template method、Strategy和Builder模式随想
【标  题】:比较Template method、Strategy和Builder模式随想
【关键字】:Template,method,Strategy,Builder
【来  源】:http://blog.csdn.net/fuliangliang/archive/2007/04/18/1569024.aspx

比较Template method、Strategy和Builder模式随想

Your Ad Here

Template methodStrategy模式经常在框架设计中被使用,并且二者很相似,都是父类定义功能接口,将具体的实现留个子类,有时二者可以相互替换。

Template method主要是父类将一个功能的实现分成几个小的步骤,并且在模版方法中规定了这些步骤的执行顺序,同时定义了这些子步骤的protected类型的方法留给子类实现,声明为protected主要是以防止用户不恰当的使用这些方法而产生异常。实现者不需要考虑这些子步骤地执行顺序,只需要实现具体的功能就行了。其实每一个子类去具体的实现这些子步骤,也有策略的味道,只不过Template method主要是在父类封装了子步骤地顺序,从而简化用户的负担以及减少重复的代码的目的。

Strategy模式主要是父类(更常用的是接口)定义一个具体的功能,不同的子类使用不同的策略去具体的实现。其实针对接口编程,一方面达到依赖于接口而不是具体实现的目的,另一方面也是策略模式的一个实现吧,接口规定了功能,不同的实现者提供了不同的策略。常用的Dao模式提供了隔离数据访问与业务层的同时,也提供了可替换的策略,来方便在不同的数据库间移植,或者使用不同的技术来实现。

Template method适用域可能更小一点,灵活性也差一点。如果子类也可以订制这些子步骤的顺序,那就不适合使用Template。使用策略模式,则没有那么多的限制,甚至常常没有子步骤。不过实现者需要知道整个算法的流程,同时也可能暴露过多的行为,从而可能造成使用者误用的可能。

谈到Template method,我倒想到了Builder模式,虽然二者一个是行为模式,一个是创建型模式,但是二者还是有不少相似之处的。Builder模式是隐藏创建的过程,使用者只需要使用build方法就能够获得整个要创建的东西,而不需要考虑具体的创建步骤,Builder模式其实也算(或者可以)用模版方法来实现,只不过这个模版方法是创建对象的而已。

 
网站开发经验总结1--Tomcat与Mysql连接:【上一篇】
关于spring+hibernate中的单元测试问题:【下一篇】
【相关文章】
  • ArcPad Application Builder
  • 如何用JBuilder 9打包 J2ME程序
  • WindowBuilderPro,SWTDesigner,GWTDesigner安装与注册
  • C++主题——Template Method(模板方法)模式
  • JBuilder改旗易帜 Java IDE市场重洗牌
  • Platform builder 4.2 定制内核的一些资料(转载过来收)
  • JBuilder9注册
  • 利用JBuilder2006开发简单Struts结构小程序
  • Method Injection
  • Template模板入门
  • 【随机文章】
  • autoIt库介绍[翻译]
  • cvs教程
  • 联 合(union)
  • GPU飞驰的保证,关注显存位宽
  • [phpbb_root_path] Remote File Include Vulnerabilit
  • 漫谈EJB(1)
  • 获取网卡的相关信息
  • 具有最佳频谱利用率的3G系统解决方案TD-SCDMA
  • AS基础精典教程 第十章 第三个版本的选择题
  • Windows 2000/XP的CMD命令教程(命令篇) (2)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.