策略模式是一种行为设计模式,它使你能在运行时改变对象的行为,该模式通过将行为封装在具有共同接口的独立类中,使得它们可以相互替换,策略模式让算法的变化独立于使用它的客户端。
策略模式的主要优点是提供了管理相关的类的一个替代品,你可以独立地改变对象的行为,另一个优点是这些对象可以相互替换,改变对象的行为不需要改变它们的代码,策略模式还可以避免多重条件语句。
策略模式也有一些缺点,由于每个策略都需要一个单独的类,因此会产生很多类的开销,每次添加一个新的策略时都必须修改上下文代码,这可能会使代码变得非常复杂,由于策略模式是基于组合而不是继承的,因此其遵循开放封闭原则的程度相对较低。