设计模式-策略模式

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

  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();// 执行相应策略
    }
}
相关推荐
500841 小时前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
摇滚侠2 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
贵慜_Derek2 小时前
《从零实现 Agent 系统》连载 07|记忆系统:短期上下文 vs 长期外部记忆
人工智能·设计模式·架构
雨落在了我的手上2 小时前
初始java(十):类和对象(⼆)
java·开发语言
莫雪歌3 小时前
Java AI 应用开发实践:基于 Spring Boot 实现 Chat、Memory、RAG 与 Tool Calling
java·aigc
SmartBrain4 小时前
AI全栈开发(SDD):慢病管理系统工程级设计
java·大数据·开发语言·人工智能·架构·aigc
梦想CAD控件4 小时前
网页端对DWG图纸进行预览与批注(CAD轻量化)
java·前端·javascript
老毛肚4 小时前
Spring boot 特性和自写Reids组件
java·spring boot·后端
极光代码工作室4 小时前
基于SpringBoot的课程管理系统
java·springboot·web开发·后端开发
JustNow_Man4 小时前
【opencode】安装使用daytona沙箱插件
android·java·javascript