中国java开源文档大全
java教程,java开源文档大全
java教程,java开源文档大全
首页 java基础 web开发框架 开发工具 应用系统 组件类库 搜索爬虫 J2EE服务器 持久层相关 测试工具 访客留言 投稿专栏 站内搜索
java教程,java开源文档大全
>首页 -> java基础 -> 设计模式

TOP

比较Template method、Strategy和Builder模式随想
[ 录入者:admin | 时间:2007-11-30 12:46:43 | 作者: | 来源:原创 | 浏览:11次 ]
  java开源文档大全致力于打造中国最大最全的开源文档,它提供了最全面最权威的开源资料,同时为大家提供一个交流的平台,如果您有好的想法,欢迎您投稿.


Template method和Strategy模式经常在框架设计中被使用,并且二者很相似,都是父类定义功能接口,将具体的实现留个子类,有时二者可以相互替换。
Template method主要是父类将一个功能的实现分成几个小的步骤,并且在模版方法中规定了这些步骤的执行顺序,同时定义了这些子步骤的protected类型的方法留给子类实现,声明为protected主要是以防止用户不恰当的使用这些方法而产生异常。实现者不需要考虑这些子步骤地执行顺序,只需要实现具体的功能就行了。其实每一个子类去具体的实现这些子步骤,也有策略的味道,只不过Template method主要是在父类封装了子步骤地顺序,从而简化用户的负担以及减少重复的代码的目的。
Strategy模式主要是父类(更常用的是接口)定义一个具体的功能,不同的子类使用不同的策略去具体的实现。其实针对接口编程,一方面达到依赖于接口而不是具体实现的目的,另一方面也是策略模式的一个实现吧,接口规定了功能,不同的实现者提供了不同的策略。常用的Dao模式提供了隔离数据访问与业务层的同时,也提供了可替换的策略,来方便在不同的数据库间移植,或者使用不同的技术来实现。
Template method适用域可能更小一点,灵活性也差一点。如果子类也可以订制这些子步骤的顺序,那就不适合使用Template。使用策略模式,则没有那么多的限制,甚至常常没有子步骤。不过实现者需要知道整个算法的流程,同时也可能暴露过多的行为,从而可能造成使用者误用的可能。
谈到Template method,我倒想到了Builder模式,虽然二者一个是行为模式,一个是创建型模式,但是二者还是有不少相似之处的。Builder模式是隐藏创建的过程,使用者只需要使用build方法就能够获得整个要创建的东西,而不需要考虑具体的创建步骤,Builder模式其实也算(或者可以)用模版方法来实现,只不过这个模版方法是创建对象的而已。



  java开源文档研究struts,webwork,spring,tomcat,jboss,lucense,nutch,JUnit,eclipse......,如果您有什么意见,欢迎评论和留言.
[下一篇] [上一篇]请问责任链真的是一种设计模式吗

评论

称  呼:
内  容:

google

相关栏目

最新文章

热门文章

推荐文章

更多友情链接>>>