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

系列文章目录

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



一、快速理解策略模式

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

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

二、策略模式的使用场景

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

三、代码示例

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

// 抽象策略:叫声策略
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方法,输出猫的叫声。

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 20:00:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 20:00:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 20:00:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 20:00:03       20 阅读

热门阅读

  1. npm的介绍和使用

    2023-12-23 20:00:03       33 阅读
  2. Linux根目录下默认目录作用

    2023-12-23 20:00:03       41 阅读
  3. 事件相机角点检测:从原理到演示编程

    2023-12-23 20:00:03       40 阅读
  4. UDP Ping程序实现--第2关:接收并转发消息

    2023-12-23 20:00:03       42 阅读
  5. 最优秀的Python开发工具

    2023-12-23 20:00:03       44 阅读
  6. Ubuntu搭建Nodejs服务器

    2023-12-23 20:00:03       42 阅读
  7. 27. 移除元素

    2023-12-23 20:00:03       39 阅读