策略模式
定义算法组,分别封装起来,让它们之间可以相互替换。让算法的变化独立于使用算法的客户
优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。
例子
需求
实现一群鸭子类,有不同的飞行行为、外观、叫声。。。
不使用策略模式
设计1:
对Duck进行修改,影响很大
设计2:
重复代码多,可修改性差。比如要修改飞行代码,要全部实现类都改。
使用策略模式
-
定义接口和具体实现行为
-
Duck抽象类