网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  设计模式_STRATEGY            【字体:
设计模式_STRATEGY
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    

期末考期间实在无聊,不想看那些本学期无聊的课程,随便应付下能过的,于是坐在图书馆,书架上抓了本《Head First: Design Pattern》 

先说这确实是本好书,不愧是JOLT大奖得主,O'RELLY出品,必属精品(虽然这句话是用来形容暴雪的),但书中那样趣味的写法和图示一扫我之前对设计模式的理解障碍。
正在装载数据……
之前看的那些图书,你必定有一定的OO代码编写经验,而且一个个枯燥的类图,你根本无法记住何时需要引入这些模式,以及不同模式间的区别,现在好了,有了“Head First”,看一遍,抵过去看五遍(哇咔咔咔咔咔咔)。。。

OK,不乱侃了。偶不过才看了50多页的书,理解完了STRATEGY模式:

原书使用JAVA描述,所以此处也使用JAVA的术语,书中描绘了一个DUCK实例,举出了使用传统的继承方式所产生的弊端:主要是没个子类有各自的方法,当有许多类时,代码将难以维护。

OK,随后是使用STRATEGY模式的例子:保留原有的基类和继承的方式,超类中包含具有相同实现的行为,子类继承超类,可选择性地对这些行为进行修改。而对于那些在不同子类中具有不同实现的行为,对其定义接口,定义对行为具体实现的类(类中implement此接口,并仅包含对特定方法的实现)。这样,超类中将包含这些需要的接口,在子类初始化时,将初始这些接口,指定其指向的类。

书中例子的类图:

例子中,DUCK超类拥有公有的行为:fly()、quack()、display()。拥有两个接口成员:QuackBehavior、FlyBehavior。FlyBeahvior作为接口,有其实现的具体类如:FlyWithWings,FlyNoWay(你也可以实现自定义的其它Fly行为,只需实现此接口即可)。QuackBehavior与FlyBehavior类似。OK,现在每一个特殊的行为实现都模块话了,在你定义子类时,只要把这个模块拉进来就行了。

STRATEGY模式的最大优点是代码的高重用性,以及以此带来的易维护性。当你对对每个具体方法使用接口和类进行封装后,当你想再次使用此方法时,你只要包含实现此方法的类就可以了。而当你要对某一方法进行修改时,只需对实现此方法的类进行修改,也就能修改到全部了。程序员的“八荣八耻”里不是说了吗,我们要以“以代码重用为荣,以复制粘贴为耻;”,咔咔~

PS:(1)关于STRATEGY模式还有一个较好的介绍:Gossip的STRATEGY模式

        (2)本文的图来自2007年软件设计师考试下午第七题

        (3)偶素大菜鸟,文中有啥错误,请您指出偶的错误,THX




本文来源:http://blog.csdn.net/miracle9i/archive/2007/07/13/1688715.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • page、request、session、ap…

  • JSP中JavaBean的生命周期

  • JSF 的性能远不及 JSP 或 St…

  • JSP学习经验总结

  • Java Swing实现俄罗斯方块

  • HashTable和HashMap; Vecto…

  • 面向对象设计原则

  • java 设计工厂模式

  • Hashtable 排序

  • iBatis一级缓存的探讨

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David