您的位置:首页 > 编程语言 > C#

懒羊学习《深入浅出设计模式》C#代码手札之策略模式

2007-11-26 12:59 851 查看
花了近两个月的时间把《深入浅出设计模式》走马观花似的翻了一遍,除了把模式的名称记得以外,其它的也就寥寥无几了。为了更好的巩固于是决定第二次翻阅这本书,而这次主要是目的就是通过自己会的东西把里面模式代码拼凑起来。以下所有文字在于记录懒羊学习这本书的一个过程,其中会存在一些词语的用词不当,以及专业性用词的错误,大家如果有所发现还请跟贴提醒,但文章中不会做相应修改,但以后的文章会采用正确的说法。没有人刚开始就会写出绝对正确的东西,希望大家来一起见证我的成长。
策略模式
第一章的鸭子搞得我有点头昏,虽然在这个城市鸭子很受欢迎,而且我也会经常去搞点鸭子来吃吃,但这次这么多的鸭子的确有点心烦,除了会飞会叫外,还会出现一堆的模型鸭,当然还有叫声各异的鸭子,经过N多天的努力,终于拼凑了代码,给我的感觉是再多的鸭子,找出它们的共同点与不同点,共同点全部塞在一起(鸭子的基类),不同点则为这些不同点的共性建立一个接口,然后再各个继承。而在具体使用的时候,尽量的用个东西代替,也就是可以在后来代码的时候能够进行替换,就比如说学生上课,这节课是计算机呢还是数学呢?可以先用一门计算机去抢下来,也就是确定这节课是计算机,最后由谁来上到时换个老师就可以了。鸭子中就是如此,先用“叫”这个接口顶着,至于后来用“呱呱叫”还是“吱吱叫”或“不叫”以后使用时再通过特定的函数进行设定。现在还回到鸭子:
首先所有的鸭子都会游泳,而且都是一样的游法,不会出现比如狗刨式啊,蛙式啊之类的方式,那么我们就可以在基类中使用swim(),而且只定义一种就可以了,而鸭子中有些会飞,有些不会飞,有些会呱呱叫,有些会吱吱叫,甚至出现了哑吧鸭(还好不是狗,否则肯定宰了喂肚子)。那么这些飞啊叫啊最好能够以后置换,而这些置换最好不要影响之前写的代码,如果影响代码还要设计模式干嘛,直接每次重写不就得了。因此我们先将“飞”与“叫”分别建立两个接口,然后把这些“会飞”“不会飞”“呱呱叫”“吱吱叫”“不叫”都继承这两个接口。而在鸭子基类中使用这两个接口,并且可以置换接口中的具体对象。如接口QuackBehavior,到时候通过这样
public void setQuackBehavior(QuackBehavior Qb)
{
quackBehavior = Qb;
}
的代码外部置换就可以了。
想想这样还真是方便,如果再需要来一个“汪汪叫”的鸭子,那么我们再建立一个“汪汪叫“的鸭子类,并且去继承QuackBehavior,然后再具体使用的时候来通过置换函数来置换,这样一只学狗叫的鸭子就诞生了,还是挺有意思的,估计这只狗逮鸭子可一逮一个准。
本文代码下载:Lesson Strategy.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐