java设计模式之策略模式

本次分享下设计模式之--策略模式

策略模式(Strategy Pattern)是设计模式中的一种行为型模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户。这种模式涉及到三个角色

策略(Strategy)接口 :定义所有支持的算法的公共接口。
具体策略(Concrete Strategy)类 :实现策略接口的具体算法。
上下文(Context)类 :接受客户的请求,随后将请求委托给策略对象。

以下是策略模式的一个简单Java实现示例:

java 复制代码
// 策略接口
public interface Strategy {
    void execute();
}

// 具体策略类A
public class ConcreteStrategyA implements Strategy {
    @Override
    public void execute() {
        System.out.println("Executing strategy A");
    }
}

// 具体策略类B
public class ConcreteStrategyB implements Strategy {
    @Override
    public void execute() {
        System.out.println("Executing strategy B");
    }
}

// 上下文类
public class Context {
    private Strategy strategy;

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

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public void executeStrategy() {
        strategy.execute();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Context context = new Context(new ConcreteStrategyA());
        context.executeStrategy(); // 执行策略A

        context.setStrategy(new ConcreteStrategyB());
        context.executeStrategy(); // 执行策略B
    }
}

在这个示例中,Strategy是一个策略接口,ConcreteStrategyA和ConcreteStrategyB是实现了Strategy接口的具体策略类。Context类持有一个Strategy类型的引用,可以指向任何策略对象。Client类中创建了一个Context对象,并分别设置为ConcreteStrategyA和ConcreteStrategyB,展示了策略模式可以在运行时动态改变对象的行为。

策略模式的主要优点包括:

算法可以独立于使用它们的客户端变化。

从客户端代码中分离算法,使算法的变化不会影响到客户端代码。

可以轻易地引入新的策略,而无需修改客户端代码或策略类。

完结,撒花!求赞求关注! 有问题可威:c_-j_-c

相关推荐
云烟成雨TD2 分钟前
Spring AI Alibaba 1.x 系列【34】Human-in-the-Loop(人在回路)执行流程
java·人工智能·spring
geovindu6 分钟前
go: Singleton Pattern
单例模式·设计模式·golang
好家伙VCC8 分钟前
**发散创新:基于Solidity的通证经济模型设计与智能合约实现**在区块链技术日益成熟的今天,**通证经济(Token Econo
java·python·区块链·智能合约
jjjava2.010 分钟前
计算机体系与进程管理全解析
java·开发语言
AI人工智能+电脑小能手11 分钟前
【大白话说Java面试题】【Java基础篇】第5题:HashMap的底层原理是什么
java·开发语言·数据结构·后端·面试·hash-index·hash
旷世奇才李先生12 分钟前
Java微服务实战:Spring Cloud Alibaba架构优化(从单体到分布式高可用)
java·微服务·架构
小成2023032026512 分钟前
数据结构(整理常见结构总结到树层级)
java·c语言·数据结构·c++·链表
ximu_polaris13 分钟前
设计模式(C++)-结构型模式-外观模式
c++·设计模式·外观模式
谢谢 啊sir13 分钟前
L1-120 智慧文本编辑器 - java
java·开发语言
weisian15118 分钟前
进阶篇-LangChain篇-15--高级Agent架构—复杂任务拆解(Plan-and-Execute架构)和多智能体协作(LangGraph)
java·架构·langchain·langgraph·planexecute架构