手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

HeadFirst设计模式学习笔记(C#版):鸭子与策略(Strategy)模式

首页 > PHP >

总是有一些奇怪的事情发生,我刚刚买了<HeadFirst 设计模式>,就有人写了如题的一篇文章。
我是用PHP的,而书上讲的例子是用伪代码(以java为蓝本)的,我也没有看多少呢,也没有想过要来实现一下,因为有些东西使用PHP的话,只会效率更低,解释型的,IO能节约还是要节约一下。
总想等看完再实现这些(第一大章还没有看完呢。)

不过,既然有人写了,总要宣扬一下的吧,代码虽然不一样,但思想总是一样的。
我也没有仔细看,就权当收藏吧。。

链接如下:

HeadFirst设计模式学习笔记(C#版):鸭子与策略(Strategy)模式

讲了什么呢?
摘要如下:


    策略模式的设计原则如下:
    1.   将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。
    2.   应针对接口,而不是类进行编程。
    3.  在类中应多用组合,少用继承。

    例子:

    我们要实现一个鸭子模拟器,这个鸭子模拟器由Duck类描述,而Duck类有如下4个行为:
    1.  display
    2.  swim
    3.  fly(飞)
    4.  quack(叫)

    其中swim是所有鸭子都具有的特性,而且所有鸭子的这些特性都相同,因此,这个方法可以直接在Duck类中实现。display方法也是所有鸭子具有的 特性,但随着鸭子的种类不同,display也有所不同,因此,display方法应为Duck类的抽象方法。fly和quack并不是所有鸭子的特性, 如橡皮鸭子即不会飞,也不会叫。因此,可以将这两个方法看作是两个行为,可将每一个行为设计成一个接口。这样可以和Duck类完全脱离。因为,fly和 quack与Duck一点关系都没有(别的东西也可能fly和quack),然后不同的fly和quack分别用实现相应接口的类表示。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: headfirst, 模式, 策略模式, strategy

« 上一篇 | 下一篇 »

只显示10条记录相关文章

观察者模式(感谢mpeg提供源码) (浏览: 21810, 评论: 7)
策略模式(感谢mpeg提供代码) (浏览: 19838, 评论: 0)
老王:单例模式是邪恶的么 (浏览: 17845, 评论: 0)

1条记录访客评论

哈,我把head first上除了工厂模式的其他示例全用JAVA敲了一下,最近比较忙,我之前也准备再用C#全实现一遍的。

Post by yhustc on 2009, February 24, 10:05 PM 引用此文发表评论 #1


发表评论

评论内容 (必填):