解释
策略模式(Strategy)定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
UML图
环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。
抽象策略类(Strategy):定义所有支持的算法的公共接口。Context使用这个接口来调用某ContreteStrategy定义的算法。
具体策略类(ConcreteStrategy):以Strategy接口实现某具体算法。
优缺点
优点:
(1)提供了管理相关的算法簇的办法,避免了代码重复;
(2)可以避免使用多重条件(if-else)语句。
缺点:
(1)客户端必须知道所有的策略类,并自行觉id那个使用哪一个策略类,增加了客户端使用难度;
(2)造成很多的策略类。