找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
把会变化的部分取出来并封装起来,以便以后可以轻易的改动或此部分,而不影响不需要变化的其他部分。
定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
-
优点
策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法和行为,也可以灵活的增加新的算法和行为。
-
缺点
客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。