文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>设计模式之策略模式(Strategy Pattern)

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

时间:2010-07-18  来源:wuyaiswuya

设计模式之策略模式(strategy-pattern)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

 

 

在进化一下,画成类图

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

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

 

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

继承类DuckA

封装的飞行类

 

听着歌飞

用翅膀飞

封装的声音接口

声音的实现类

 

 

 

 

 

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

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

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

回顾一下我自己的定义

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

<!--EndFragment-->

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载