设计模式-策略模式

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

  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();// 执行相应策略
    }
}
相关推荐
LiLiYuan.37 分钟前
【Java 6种线程状态】
java·开发语言
itzixiao1 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
用户298698530141 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端
Chengbei112 小时前
红队专属Bing Dork自动化工具,敏感信息侦察效率拉满、自动生成可视化信息泄露审计报告
java·人工智能·安全·web安全·网络安全·自动化·系统安全
敖正炀2 小时前
集合-Set深入解析
java
下次再写2 小时前
Java互联网大厂面试技术问答实战:涵盖Java SE、Spring Boot、微服务及多场景应用
java·数据库·缓存·面试·springboot·microservices·技术问答
公众号-老炮说Java2 小时前
IDEA 2026.1 + Claude Code = 降维打击
java·ide·intellij-idea
千寻girling3 小时前
RabbitMQ 详细教程(38K字数)
java·后端·面试
止语Lab3 小时前
Go vs Java GC:同一场延迟战争的两条路
java·开发语言·golang
卷毛的技术笔记3 小时前
从“拆东墙补西墙”到“最终一致”:分布式事务在Spring Boot/Cloud中的破局之道
java·spring boot·分布式·后端·spring cloud·面试·rocketmq