[关闭]
@songying 2018-07-10T20:04:17.000000Z 字数 594 阅读 1037

策略模式

设计模式


定义

定义一组算法, 把每个算法都封装起来,并且使得它们之间可以互换。

三个角色

Context 封装角色

起到承上启下封装作用,屏蔽高层模块对策略,算法的直接访问, 封装可能存在的变化。

Strategy 抽象策略角色

策略,算法的抽象,通常为接口。定义每个策略,算法必须具有的方法和属性。

ConcreteStrategy 具体策略角色

实现抽象策略中的操作, 该类具有具体的算法。

代码角度

抽象策略角色

  1. public interface Strategy{
  2. public void doSomething();
  3. }

具体策略角色

  1. public class ConcreteStrategy1 implements Strategy {
  2. public void doSomething(){
  3. # 具体实现逻辑
  4. }
  5. }

封装角色

  1. public class Context{
  2. private Strategy strategy = null;
  3. public Context(Strategy _strategy){
  4. this.strategy = _strategy
  5. }
  6. public void doAnything(){
  7. this.strategy.doSomething();
  8. }

高层模块

  1. Strategy strategy = new ConcreteStreategy();
  2. Context context = new Context(strategy);
  3. context.doAnything();
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注