策略模式
定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。 角色 环境类(Context) : 用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。 抽象策略类(Strategy): 定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。 具体策略类(ConcreteStrategy): 以Strategy接口实现某具体算法。 使用场景 当存在以下情况时使用Strategy模式 1、多个类只区别在表现行为不同。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 2、需要使用一个算法的不同变体。 3、对客户(Duck)隐藏具体策略(算法)的实现细节,彼此完全独立。 4、一个类定义了多种行为 , 且这些行为在该类的操作中以多个条件语句的形式出现。将相关条件分支移入它们各自的Strategy类中以代替这些条件语句。 优缺点 对于Strategy模式来说,主要有如下优点: 1、 提供了一种替代继承的方法