我的模式之路一:策略模式(Strategy)学习

申明:本系列文章乃我学习总结之用,不做教材,所以无文字语法,顺序可言。大家要系统学习,请参考正规资料。
很高兴,我终于不“懒”了,终于要自己写博了,把我的学习过程记录下来。 那么今天把我学习到的第一个模式学习复习心得记录下来,开始了:

设计模式开始我认为很复杂,很困难,很高深。(也许很多没接触过的朋友和我一样,那么我要告诉你,请立刻接触它,接触是了解一个新事物的第一步,有了开始,什么都好办了。)希望我的学习路程记录对我和同样奋斗在模式学习的朋友有点点帮助吧。

首先,学习设计模式之前的必备功课,掌握一门OO语言的基础。知道什么是继承,什么是接口,什么是虚类等等OO的基础知识,设计模式是告诉你关于如何使用它们的更“经验”的知识,所以它们是基础。我在用C#,所以今后我举例都是C#代码。其它OO语言部分内容可能需要做一些调整,但是不妨碍学习。

目前我学习设计模式的资料有以下几本书(不是广告,你可以根据自己喜欢的来选择其它的),今后举例很有可能直接引用书本的内容,如果涉及版权,请与我联系,我将删减。

《大话设计模式 之 小菜编程成长记》 本书通过2个例子告诉你设计模式是什么,让你克服学习设计模式的心理障碍,事实上我就受益于它。但是我没有全书,只有网上流传的一个拷贝版。它是入门中的入门的一份不错的参考资料。
《Head.First设计模式》 通过很幽默但并不失严谨的方式告诉你设计模式,教会你在什么场合下使用它(目前我正在通过这本书学习设计模式)
《Design Patterns in C#》,中文版本《C#设计模式》 本书比较传统,但是如果要掌握好设计模式,我想类似的传统的资料是需要一份的。
《设计模式解析》 本书是在我没有接触第一本和第二本的时候买的,我不知道有了第2份资料后,我是否还需要它。等我学习完了再来总结吧。

下面进入正题,策略模式的学习:
定义:策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

Faint!~这个定义很正式,如果没学过模式的朋友,一定看了很头疼,我也是的。所以,我打开了《Head.First设计模式》这份资料,里边举了一个鸭子的例子来学习它。

根据我目前的理解,策略模式主要应用于某一抽象对象的子类对象算法多变且可以组合的情况下使用。

根据图书例子,Duck 抽象类定义了一切鸭子的属性和方法,其中把FlyBehavior和QuackBehavior2个行为定义为行为接口,以便使用多态表现鸭子行为(还具有运行期改变鸭子行为的效果)。

继承接口为了实现算法族。 把动态改变的部分封装成继承子类。 策略模式的重点也就是在这里。

鸭子还有一个抽象方法Display(),定义在抽象类 Duck 下边,以便所有继承子类的鸭子都必须实现自己的显示功能。因为每一类继承的鸭子都有自己的显示方式,而且这个方式是独一无二的(不可改变),不可组合而来,所以它不能实现算法族。

下面是UML图和说明,看一下,对上边的描述应该更清楚:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值