本文章出自《Head First设计模式》读后感
策略模式定义
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。
策略模式小故事
这是一个JOE在上班的时候做一个“模拟鸭子游戏”的小故事
以下是模拟鸭子的部分代码
上图中可以看出,Duck是鸭子的超类 所有鸭子都必须继承Duck这个超类。
-
问题点:有些鸭子会飞,怎么办呢?
-
答:在超类Duck中添加一个fly方法即可。
-
问题点:每个实现鸭子的类都要去实现fly 会飞的方法,那我有个模型鸭呢?模型鸭不会飞的。
-
答:这个时候可以把模型鸭的fly方法重写,覆盖掉飞的行为。
-
问题点:这样每个鸭子的fly方法都要重写,如果我有十种、一百种鸭子怎么办呢?
-
答:使用策略模式,还记得策略模式的定义吗?抽取变化部分,使他们可以互相替换互相独立。。
-
问题点:我们的变化部分在哪里呢?
-
答:飞行的方法,叫声的方法。
使用策略模式
相信看问题点和上图,已经很想清楚策略模式的应用了吧!