本文介绍了GoF中的策略模式。
模式推演
需要给各类鸭子建类,一般想法是使用继承:
这样的做法比较简单,但是在加入新的方法时,需要对每个子类进行修改,例如对鸭子加入飞的行为,但是橡皮鸭并不会飞。需要想办法进行优化。
OO原则:封装变化
为了将可能发生变化的部分独立出来,使用接口:
这样的做法将变化独立了,但是每个子类都需要实现一次方法,代码冗余严重,需要继续优化。
OO原则:针对接口编程,不针对实现编程
将重复的部分封装起来,利用组合:
这样的做法,既避免了使用继承可能导致的后续修改,也避免了单纯使用接口的代码冗余,这就是策略模式的优势。
OO原则:多用组合、少用继承
定义
策略模式(Strategy Pattern):定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
涉及到的OO(面向对象)基础为:
1 | 抽象 |