23种设计模式——策略模式(Strategy)
一、策略模式 策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。比如出行方式,可以选择骑自行车、坐公交车、打车、开车等等,每种出行方式都是一个策略。 二、策略模式的应用 1.使用场景 针对同一类型的问题,有多种处理方式,每一种都能独立解决问题且区分它们的只是它们直接的行为。算法需要自由切换的场景。需要屏蔽算法规则的场景。 2.使用方式 strategy类,定义所有支持的算法的公共接口。 concreteStrategy,封装具体的方法或行为,继承strategy类。 context,用一个concreteStrategy来配置,维护一个对strategy的引用。 简单工厂或枚举类生成Context对象。 3.主要解决 有多种算法相似的情况下,大量使用if else为程序带啦的负责性和臃肿性。 4.优点 算法的多样性,且具备自由切换场景。有效避免多重条件判断,增强了封装性,简化的操作,降低出错概率。扩展性良好,策略类遵循里氏替换原则,可以很方便的进行策略扩展。 5.缺点 策略类数量增多,每个策略都是一个类,复用的可能性很小。所有策略类必须对外暴露,以便客户端能够选择。 6.注意事项 如果一个系统的策略多于四个,就需要考虑使用混合模式来解决策略膨胀的问题。 三、策略模式的实现 1.strategy public abstract class