Java 设计模式(3)策略模式

  1. 上一篇
    1. Java 设计模式(2)工厂模式
  2. 特点
    1. 环境(Context)角色:持有一个Strategy的引用
    2. 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
    3. 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
  3. 分类
    1. // 抽象策略类
      public interface Strategy {
          /**
           * 策略方法
           */
          public void strategyInterface();
      }
      
      
      // 具体策略类A
      public class ConcreteStrategyA implements Strategy {
      
          @Override
          public void strategyInterface() {
              //相关的业务    }
      
      }
      // 具体策略类B
      public class ConcreteStrategyB implements Strategy { @Override public void strategyInterface() { //相关的业务 } }
      // 具体策略类C
      public class ConcreteStrategyC implements Strategy { @Override public void strategyInterface() { //相关的业务 } } // 环境角色类 public class Context { //持有一个具体策略的对象 private Strategy strategy; /** * 构造函数,传入一个具体策略对象 * @param strategy 具体策略对象 */ public Context(Strategy strategy){ this.strategy = strategy; } /** * 策略方法 */ public void contextInterface(){ strategy.strategyInterface(); } } // 调用 public class Diaoyong{ public static void main(String[] args) { Context context; System.out.println("----------满足A条件时---------------"); context = new Context(new ConcreteStrategyA()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); System.out.println("----------满足B条件时---------------"); context = new Context(new ConcreteStrategyB()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); System.out.println("----------满足C条件时---------------"); context = new Context(new ConcreteStrategyC()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); } }

       

  4. 下一篇
    1. Java 设计模式(4)策略模式+工厂模式
posted @ 2025-07-24 15:47  zwjvzwj  阅读(4)  评论(0)    收藏  举报