论坛首页 Java企业应用论坛

设计模式解读之一: 策略模式

浏览 35465 次
精华帖 (11) :: 良好帖 (4) :: 新手帖 (16) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-03-24  
例子是HeadFirst书上的,理解方式也是书上的,描述章节也是书上的,是不是可以加一些独立思考的东西进去啊.
0 请登录后投票
   发表时间:2009-03-24  
楼主讲的挺好

但是,最后一句话值得商榷“策略模式的本质:少用继承,多用组合”

对于基本的OO设计模式,继承VS组合是个不能再核心的问题,很大一部分模式都是灵活的在其中做取舍。

个人觉得,特定的设计模式的核心还是它适用的场景;当然,我们可以用一些基本设计原则来衡量它,设计模式反过来也很好的实践了这些基本的设计原则。
0 请登录后投票
   发表时间:2009-03-24  
设计模式的核心是怎么用, 对于模式定义和结构的理解反而是其次的。 楼上的说得很好, 继承和组合, 不能单纯的理解谁好谁坏, 而是要看scenario和最终的需求。 继承最大的特点是它在实现复用的同时破坏了封装。 但不是说用继承就不好。 这点千万不要搞错。 见过太多的代码为了套模式而套模式。
0 请登录后投票
   发表时间:2009-03-30  
非常清楚的解释 谢谢楼主
0 请登录后投票
   发表时间:2009-04-02  
好像不是策略模式吧。
0 请登录后投票
   发表时间:2009-04-02  
总结的太好了,不过要用于实践中去还要一段时间的磨练才可以。受益匪浅。
0 请登录后投票
   发表时间:2009-07-03  
wujie2008 写道
总结的不错。受益匪浅。学习中。
我认为楼主的意思是:
   1.通过继承实现的代码复用容易引起牵一发而动全身的弊端。而且在父类中添加方法可以使不用拥有此方法的类也拥有此方法。
   2.通过组合实现的代码复用更具弹性,而且便于扩展。
   3.面向抽象编程可以提高程序的复用率。增加灵活性。
   4.策略模式的核心是,将问题的可变性和不可变性分开处理,将可变性单独抽取成接口,并且按照具体策略对其进行不同的实现,再通过类的组合达到代码复用,避免继承复用代码,每当需要添加新的方法是,就添加对应的接口和实现类,解决继承造成的代码复用问题。

不知理解的对不对,
另外有一个问题:
  当需求不断变化,需要添加许多的方法,而且有不同的实现,那么系统的类是不是会呈现爆炸式增长。怎么解决这个问题。

0 请登录后投票
   发表时间:2009-07-03  
组合优先于继承 这个观点 是没错的

不过感觉 你这个鸭子的抽象 有问题
如果橡皮鸭子 可以作为鸭子的子类
那么 烤鸭也可以作为 鸭子的子类了

那我估计你的代码又要重构了。
0 请登录后投票
   发表时间:2009-08-03  
Header First里面的吗,在那本书里面见过。
0 请登录后投票
   发表时间:2009-08-03  
hunter001201 写道
这种解释就是误导。

本身鸭子这个例子就没有可以用策略模式的影子。


的确看不见策略的影子
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics