标签:图片 ref 策略 算法 void img color 拓展 exti
策略模式
做一件事,采用不同的策略。
context上下文
public class Context { Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } //上下文接口 public void contextInterface() { strategy.algorithmInterface(); } }
Strategy抽象策略
public abstract class Strategy { //算法方法 public abstract void algorithmInterface(); }
ConcreteStrategy具体策略实现
public class ConcreteStrategyA extends Strategy { @Override public void algorithmInterface() { System.out.println("算法A实现"); } }
Client客户端(用同一个上下文加载不同的策略,得到不同的策略实现结果)
public class Client { public static void main(String[] args) { Context context; context = new Context(new ConcreteStrategyA()); context.contextInterface(); context = new Context(new ConcreteStrategyB()); context.contextInterface(); context = new Context(new ConcreteStrategyC()); context.contextInterface(); } }
优点:避免if/else,添加策略只需添加新的策略实现类,策略可以自由切换,拓展性好。
缺点:所有策略实现类都需要对外(客户端)暴露。
和工厂模式的区别
工厂模式侧重与类的创建,策略模式侧重于策略的执行结果。
------
参考:
https://www.cnblogs.com/adamjwh/p/11011095.html
标签:图片 ref 策略 算法 void img color 拓展 exti
原文地址:https://www.cnblogs.com/lankerenf3039/p/12121080.html