您的位置:首页 > 编程语言 > Go语言

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

2014-01-05 00:54 295 查看
策略模式--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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: