设计模式之-策略模式,快速掌握策略模式,通俗易懂的讲解策略模式以及它的使用场景

系列文章目录

设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
设计模式之模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
设计模式之-代理模式,快速掌握理解代理模式,以及代理模式的使用场景
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景
设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
设计模式之-适配器模式,快速掌握适配器模式,通俗易懂的讲解适配器模式以及它的使用场景


文章目录


一、快速理解策略模式

策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装到独立的策略类中,使它们可以相互替换。策略模式使算法的变化独立于使用算法的客户端。

在现实生活中,策略模式的例子可以是支付方式的选择。当用户进行支付时,可以根据具体的支付方式选择不同的策略,如现金支付、信用卡支付或支付宝支付。这些支付方式都是不同的算法,但用户不需要关心具体的实现细节,只需要选择合适的支付方式。

二、策略模式的使用场景

  1. 当需要在不同情况下选择不同的算法时,可以使用策略模式。策略模式通过封装每个算法到独立的策略类中,使得算法的变化独立于客户端。
  2. 当一个类中有多种行为,并且这些行为可以相互替换时,可以使用策略模式。策略模式可以避免使用大量的条件语句,使代码更加清晰和可维护。

三、代码示例

下面是一个通俗易懂的策略模式示例代码,以动物叫声为场景:

cpp 复制代码
// 抽象策略:叫声策略
interface SoundStrategy {
    void makeSound();
}

// 具体策略:狗叫声
class DogSoundStrategy implements SoundStrategy {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪!");
    }
}

// 具体策略:猫叫声
class CatSoundStrategy implements SoundStrategy {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵!");
    }
}

// 环境类:动物
class Animal {
    private SoundStrategy soundStrategy;

    public void setSoundStrategy(SoundStrategy soundStrategy) {
        this.soundStrategy = soundStrategy;
    }

    public void makeSound() {
        soundStrategy.makeSound();
    }
}

// 客户端代码
public class Main {
    public static void main(String[] args) {
        Animal dog = new Animal();
        dog.setSoundStrategy(new DogSoundStrategy());
        dog.makeSound(); // 汪汪汪!

        Animal cat = new Animal();
        cat.setSoundStrategy(new CatSoundStrategy());
        cat.makeSound(); // 喵喵喵!
    }
}

在上面的示例中,SoundStrategy是抽象策略,定义了叫声策略的方法。DogSoundStrategy和CatSoundStrategy是具体策略,分别实现了叫声策略的方法。

Animal是环境类,持有一个叫声策略的引用。通过调用环境类的makeSound方法,可以根据设置的叫声策略来发出不同的叫声。

在客户端代码中,首先创建了一个狗对象dog,并设置了狗叫声的策略。然后调用狗对象的makeSound方法,输出狗的叫声。接着创建了一个猫对象cat,并设置了猫叫声的策略,再调用猫对象的makeSound方法,输出猫的叫声。

通过使用策略模式,可以根据不同的情况选择不同的策略,而不需要改变环境类的代码。策略模式将算法的变化独立于客户端,使代码更加灵活和可扩展。

相关推荐
吴声子夜歌3 小时前
ApacheCommons——commons-pool2(高性能通用对象池框架)
java·开发语言·apache
xcl09258 小时前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌8 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天8 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star8 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
今天AI了吗9 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午10 小时前
27-AuthService登录链路
java·低代码·架构
泡海椒10 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
Rain的Java大神之路11 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner11 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库