Technology-设计模式-策略模式

本文介绍了GoF中的策略模式。

模式推演

需要给各类鸭子建类,一般想法是使用继承:

Technology-DesignPattern-Strategy-Inherit

这样的做法比较简单,但是在加入新的方法时,需要对每个子类进行修改,例如对鸭子加入飞的行为,但是橡皮鸭并不会飞。需要想办法进行优化。

OO原则:封装变化

为了将可能发生变化的部分独立出来,使用接口:

Technology-DesignPattern-Strategy-Interface

这样的做法将变化独立了,但是每个子类都需要实现一次方法,代码冗余严重,需要继续优化。

OO原则:针对接口编程,不针对实现编程

将重复的部分封装起来,利用组合:

Technology-DesignPattern-Strategy-Composite

Technology-DesignPattern-Strategy-Composite

这样的做法,既避免了使用继承可能导致的后续修改,也避免了单纯使用接口的代码冗余,这就是策略模式的优势。

OO原则:多用组合、少用继承

定义

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

涉及到的OO(面向对象)基础为:

1
2
3
4
抽象
封装
多态
继承