锁定老帖子 主题:设计模式解读之一: 策略模式
精华帖 (11) :: 良好帖 (4) :: 新手帖 (16) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-24
例子是HeadFirst书上的,理解方式也是书上的,描述章节也是书上的,是不是可以加一些独立思考的东西进去啊.
|
|
返回顶楼 | |
发表时间:2009-03-24
楼主讲的挺好
但是,最后一句话值得商榷“策略模式的本质:少用继承,多用组合” 对于基本的OO设计模式,继承VS组合是个不能再核心的问题,很大一部分模式都是灵活的在其中做取舍。 个人觉得,特定的设计模式的核心还是它适用的场景;当然,我们可以用一些基本设计原则来衡量它,设计模式反过来也很好的实践了这些基本的设计原则。 |
|
返回顶楼 | |
发表时间:2009-03-24
设计模式的核心是怎么用, 对于模式定义和结构的理解反而是其次的。 楼上的说得很好, 继承和组合, 不能单纯的理解谁好谁坏, 而是要看scenario和最终的需求。 继承最大的特点是它在实现复用的同时破坏了封装。 但不是说用继承就不好。 这点千万不要搞错。 见过太多的代码为了套模式而套模式。
|
|
返回顶楼 | |
发表时间:2009-03-30
非常清楚的解释 谢谢楼主
|
|
返回顶楼 | |
发表时间:2009-04-02
好像不是策略模式吧。
|
|
返回顶楼 | |
发表时间:2009-04-02
总结的太好了,不过要用于实践中去还要一段时间的磨练才可以。受益匪浅。
|
|
返回顶楼 | |
发表时间:2009-07-03
wujie2008 写道 总结的不错。受益匪浅。学习中。
我认为楼主的意思是: 1.通过继承实现的代码复用容易引起牵一发而动全身的弊端。而且在父类中添加方法可以使不用拥有此方法的类也拥有此方法。 2.通过组合实现的代码复用更具弹性,而且便于扩展。 3.面向抽象编程可以提高程序的复用率。增加灵活性。 4.策略模式的核心是,将问题的可变性和不可变性分开处理,将可变性单独抽取成接口,并且按照具体策略对其进行不同的实现,再通过类的组合达到代码复用,避免继承复用代码,每当需要添加新的方法是,就添加对应的接口和实现类,解决继承造成的代码复用问题。 不知理解的对不对, 另外有一个问题: 当需求不断变化,需要添加许多的方法,而且有不同的实现,那么系统的类是不是会呈现爆炸式增长。怎么解决这个问题。 |
|
返回顶楼 | |
发表时间:2009-07-03
组合优先于继承 这个观点 是没错的
不过感觉 你这个鸭子的抽象 有问题 如果橡皮鸭子 可以作为鸭子的子类 那么 烤鸭也可以作为 鸭子的子类了 那我估计你的代码又要重构了。 |
|
返回顶楼 | |
发表时间:2009-08-03
Header First里面的吗,在那本书里面见过。
|
|
返回顶楼 | |
发表时间:2009-08-03
hunter001201 写道 这种解释就是误导。
本身鸭子这个例子就没有可以用策略模式的影子。 的确看不见策略的影子 |
|
返回顶楼 | |