策略模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略模式相关的知识,希望对你有一定的参考价值。

技术分享

技术分享


用户的角度:只需要知道具体的Context,并知道具体的策略类。

实现者的角度:拥有具体的策略类,封装了具体的算法或行为,并抽象一个公共的算法接口,包含在一个Context上下文中。


 

package com.stategy;

/**
 * 上下文
 * @author 黄二狗
 *
 */
public class Context {
   private Strategy strategy;
   public Context(Strategy strategy)
   {
       this.strategy=strategy;
   }
   
   public void contextInterface()
   {
       strategy.Algorithmlnterface();
   }
}

 

package com.stategy;

public interface Strategy {
   void Algorithmlnterface();
}
package com.stategy;

public class ConcreteStrategyA implements Strategy{

    @Override
    public void Algorithmlnterface() {
        System.out.println("具体的策略A");
        
    }

}
package com.stategy;

public class ConcreteStrategyB implements Strategy{

    @Override
    public void Algorithmlnterface() {
        System.out.println("具体的策略B");
        
    }

}
package com.stategy;

public class ConcreteStrategyC implements Strategy{

    @Override
    public void Algorithmlnterface() {
        System.out.println("具体的策略C");
        
    }

}
package com.stategy;

/**
 * 用户需要知道具体的策略和策略接口还有上下文及其上下文的方法
 * @author 黄二狗
 *
 */
public class Client {
   public static void main(String[] args) {
      Strategy strategy=new ConcreteStrategyA();
      Context context=new Context(strategy);
      context.contextInterface();
}
}

技术分享

 

以上是关于策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

用于从 cloudkit 检索单列的代码模式/片段

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式