策略模式--GOF的23个之一

来源:互联网 发布:java图形界面编程 弹框 编辑:程序博客网 时间:2024/04/29 21:25

策略模式--GOF的23个之一

 

前言:推荐《Head First 设计模式》,是它带给我设计模式,本文章均归纳来自此书,仅为学习使用,不涉及商务利益。『策略模式』定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。


 

 

问题:

1、     代码在多个子类中重复。

2、     运行时的行为不容易改变。

3、     很难知道所有鸭子的全部行为。

4、     改变会牵一发动全身,造成其他鸭子不想要的改变。

5、     并非所有子类都有一个行为(并非所有鸭子都能飞)。

6、     开Flyalbe接口,造成代码无法复用。

7、     子类对同一接口有不同的实现方式(鸭子飞行的动作可能多种变化)。

 

 

层次一:找出应用中可能需要变化之处,把它们独立出来, 不要和那些不需要变化的代码混在一起。

 

层次二:多用组合,少用继承。

当你将两个类结合起来使用,如同本例一般,这就是组合(co m p o s i t i o n)。这种作法和『继承』不同的地方在于,鸭子的行为不是继承而来,而是和适当的行为对象『组合』而来。

 

 

『我们使用策略模式实现鸭子的各种行为。』这句话也就是告诉我们,鸭子的行为被封装进入一组类中,可以被轻易地扩充与改变。如果有需要,甚至在运行时也可以改变行为。




 

如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com

 

 

5 0
原创粉丝点击