首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式之策略模式(Strategy Pattern)

2012-10-20 
设计模式之策略模式(Strategy Pattern)很久就想买head?first?设计模式?这本书了,纠结了好久,终于在某个日

设计模式之策略模式(Strategy Pattern)
很久就想买head?first?设计模式?这本书了,纠结了好久,终于在某个日子出手了。发觉上班以来一段时间都混混沌沌的,要增加知识了,我要成为一个架构师。

回归正题,动动手加深记忆:

???策略模式官方定义的是:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

乍一看,这啥是算法族啊,但是后面那句分别封装起来就看懂了,简单点来说就是对一个模型进行归类,然后在封装起来。在使用的时候可以自由组合,以应付令人蛋疼的客户需求。

策略模式的精华可以提炼为:“归类,封装,组合”这三个,按照事物的模型进行归类,对模型不同的类别进行算法封装,然后在根据用户的需求组合起来。

算算自己搞java?也有一段时间了,记得应该是大二暑假的时候开始疯狂,到现在也有两年了,参与了一个两个项目,有幸领导了一个项目来做,而且是按照自己的想法来做,毕业后就是有太多的想法了。现在不专心了。搞程序的光写不行,还是要敲一写代码来加深记忆。

求包养没包出去,和谐社会提倡鸭和鸡平起皮做。那就以鸭为例来说吧。先分析一下。

鸭子分为很多种,野鸭啊,家鸭啊还有就是鸭。有个共性,他们都是鸭,都有自己特色的模样,二一个呢所以的鸭子都会叫,当然叫声是不一样的,那声音也算一个,在一个,有些鸭子会飞,这个动作也算一个。好,现在归了三类出来,是?“模样”,“声音”,“动作”。

用脚趾头假设一下,鸭子的模样就是那样的,怎么变也不会变成鸡,所以模样是都有的。叫声呢不一定都有,人还有哑巴呢,在一个动作,就以飞来说,估计现在就野鸭会飞了。家鸭没那本事。所以我们归了三类。

1、鸭子的模样(所有的鸭子都有的特点)

????????????2、鸭子的声音(鸭子里也有哑巴)

3、鸭子的动作(以鸭飞的动作为例)

??现在都要求图文并茂,砖家说这样可以提高学习效率,比吃脑白金低碳多了,所以我也就画画图加深记忆。?????

设计形式之策略模式(Strategy Pattern)

在稍微变化一下把鸭子的三个行为分别抽象成三种行为:

设计形式之策略模式(Strategy Pattern)

在进化一下,画成类图

设计形式之策略模式(Strategy Pattern)

其中封装的对象为接口,这里不搞成抽象类是因为类可以实现多个接口,但是只能继承一个抽象类。

还是要贴贴代码,方便下次看

设计形式之策略模式(Strategy Pattern)

抽象类Duck,所以的鸭子都要继承

设计形式之策略模式(Strategy Pattern)

继承类DuckA

设计形式之策略模式(Strategy Pattern)

封装的飞行类

设计形式之策略模式(Strategy Pattern)

听着歌飞

设计形式之策略模式(Strategy Pattern)

用翅膀飞

设计形式之策略模式(Strategy Pattern)

封装的声音接口

设计形式之策略模式(Strategy Pattern)

声音的实现类

最后就到测试了,搞一个TestDuck类,

设计形式之策略模式(Strategy Pattern)

Strategy?pattern?策略模式是搞完了,怎么也记不住?Strategy?Pattern?这俩单词,杯具,再来回顾一下策略模式的官方定义

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

回顾一下我自己的定义

????策略模式简单来说就是?“归类”、“封装”、“组合”,说的明白点就是对模型进行分类,将变化的和不变化的进行归类,然后针对变化的进行封装成行为接口,将不变化的封装成共有的属性或者方法。最后一步是组合,根据用户的需要进行组合。搞定。

热点排行