设计模式-策略模式

策略模式的主要角色如下:

  1. 抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  2. 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
  3. 环境或上下文(Context)类:是使用算法的角色, 持有一个策略类的引用,最终给客户端调用。

接口Strategy

java 复制代码
package com.cocoa.strategy;

/**
 * 抽象策略类
 **/
public interface Strategy {

    void algorithm();
}

类StrategyA

java 复制代码
package com.cocoa.strategy;

public class StrategyA implements Strategy {

    @Override
    public void algorithm() {
        System.out.println("执行策略A");
    }
}

类StrategyB

java 复制代码
package com.cocoa.strategy;

public class StrategyB implements Strategy {

    @Override
    public void algorithm() {
        System.out.println("执行策略B");
    }
}

类StrategyFactory/Context(策略工厂)

java 复制代码
package com.cocoa.strategy;

/**
 * 环境类
 **/
public class StrategyFactory {

    // 维持一个对抽象策略类的引用
    private Strategy strategy;

    public StrategyFactory(Strategy strategy) {
        this.strategy = strategy;
    }

    // 调用策略类中的算法
    public void algorithm(){
        strategy.algorithm();
    }
}

测试类Main

java 复制代码
package com.cocoa.strategy;

public class Main {
    public static void main(String[] args) {
        Strategy strategyA  = new StrategyA();
        StrategyFactory context = new StrategyFactory(strategyA); //可以在运行时指定类型,通过配置文件 + 反射机制实现

        context.algorithm();// 执行相应策略
    }
}
相关推荐
Ivanqhz9 分钟前
Rust Lazy浅析
java·javascript·rust
choumin14 分钟前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
bksczm36 分钟前
Linux之日志和线程池、内存池
java·开发语言
笨蛋不要掉眼泪43 分钟前
Java虚拟机:对象复活、引用强度与Stop-The-World
java·开发语言·jvm
37.2℃9951 小时前
Claude Design哪个公司技术好
python·设计模式
凤山老林1 小时前
SpringBoot实战:构建优雅的全局异常处理机制
java·springboot·异常处理
小Ti客栈1 小时前
Spring Boot 整合 Swagger2 和 Knife4j实现接口文档与可视化调试
java·spring boot·后端
梅头脑1 小时前
ThreadLocalMap里几十万个死Entry——排查了半天OOM,根因就一行finally没写
java
阿懂在掘金2 小时前
Vue 弹窗新范式——代码减少、复用翻倍与 AI 时代的前端基建
前端·设计模式·前端框架
2601_963870172 小时前
【计算机毕业设计】基于Spring Boot的社区老年大学课程报名与学习系统的设计与实现
java·spring boot·学习