简介:对象的一个行为,在不同的场景下,有不同的算法
目的:让用于行为的算法和行为进行独立,互不影响
总结:同一行为在不同的场景下,使用不同的算法
组成:对象行为, 算法接口, 算法接口实现
1,对象行为
package com.design.g.strategy.base; /** * 对象行为 * 上下文 */ public class Context { private StrategyService strategyService; //策略 public void method(){ //使用策略的具体方法 strategyService.algorithm(); } public void setStrategyService(StrategyService strategyService) { this.strategyService = strategyService; } }
2,算法接口
package com.design.g.strategy.base; /** * 算法接口 * 策略接口 */ public interface StrategyService { /** * 策略算法 */ void algorithm(); }
3,算法接口实现
package com.design.g.strategy.base; /** * 算法A实现 * 策略实现 - A算法 */ public class StrategyAServiceImpl implements StrategyService { @Override public void algorithm() { System.out.println("使用策略 - A - 算法 。。。 。。。"); } }
package com.design.g.strategy.base; /** * 算法B实现 * 策略实现 - B算法 */ public class StrategyBServiceImpl implements StrategyService { @Override public void algorithm() { System.out.println("使用策略 - B - 算法 。。。 。。。"); } }
package com.design.g.strategy.base; /** * 算法C实现 * 策略实现 - C算法 */ public class StrategyCServiceImpl implements StrategyService { @Override public void algorithm() { System.out.println("使用策略 - C - 算法 。。。 。。。"); } }
4,Main
package com.design.g.strategy.base; /** * 7-策略模式 * * 简介:往一个方法当中插入随便一段代码 */ public class MainTest { public static void main(String[] args) { //使上下文method方法使用策略A算法 Context content = new Context(); content.setStrategyService(new StrategyAServiceImpl()); content.method(); //使上下文method方法使用策略B算法 content.setStrategyService(new StrategyBServiceImpl()); content.method(); //使上下文method方法使用策略C算法 content.setStrategyService(new StrategyCServiceImpl()); content.method(); } }
5,Result
使用策略 - A - 算法 。。。 。。。 使用策略 - B - 算法 。。。 。。。 使用策略 - C - 算法 。。。 。。。