java23种设计模式之策略模式

概述

策略模式是23种设计模式之一,也是工作中出现频率比较高的设计模式之一,策略模式主要是为了针对不通业务场景做出不同行为的一种设计模式。该模式一般可以直接替换多个if eles 的场景。策略模式主要分为三个部分,策略接口,具体实现策略的类,还有一个策略上下文对象。

示例

复制代码
package com.example.demo.service.strategy;

/**
 * @author 双子的小坏
 * @date 2024/6/28 11:44:54
 * @description : 吃什么策略接口
 */
public interface EatWhatStrategy {

    /**
     * 吃东西方法
     * @return
     */
    String eatSomeing();
}
java 复制代码
package com.example.demo.service.strategy;

/**
 * @author 双子的小坏
 * @date 2024/6/28 11:47:05
 * @description :有钱的策略
 */
public class HaveMoneyStrategy implements EatWhatStrategy{

    @Override
    public String eatSomeing() {
        return "有钱当然是下馆子了!!!";
    }
}
java 复制代码
package com.example.demo.service.strategy;

/**
 * @author 双子的小坏
 * @date 2024/6/28 11:50:16
 * @description :没钱的策略
 */
public class NoMoneyStrategy implements EatWhatStrategy{

    @Override
    public String eatSomeing() {
        return "没钱就吃土呗";
    }
}
java 复制代码
package com.example.demo.service.strategy;

/**
 * @author 双子的小坏
 * @date 2024/6/28 11:51:36
 * @description : 吃什么策略的上下文对象
 */
public class EatWhatStrategyContent {

    /**
     * 吃什么策略的引用
     */
    private EatWhatStrategy eatWhatStrategy;

    /**
     * 设置策略的方法
     * @param eatWhatStrategy 具体策略
     */
    public void setEatWhatStrategy(EatWhatStrategy eatWhatStrategy){
            this.eatWhatStrategy = eatWhatStrategy;
    }

    /**
     * 调用吃什么的方法
     */
    public String eat(){
     return   eatWhatStrategy.eatSomeing();
    }
}
java 复制代码
package com.example.demo.service.strategy;

/**
 * @author 双子的小坏
 * @date 2024/6/28 11:56:32
 * @description : 策略模式
 */
public class StrategyDemo {

    public static void main(String[] args) {
        //创建上下文对象
        EatWhatStrategyContent eatWhatStrategyContent = new EatWhatStrategyContent();
        //设置有钱的策略
        eatWhatStrategyContent.setEatWhatStrategy( new HaveMoneyStrategy());
        //调用策略方法进行返回
        String eatStr = eatWhatStrategyContent.eat();
        System.out.println(eatStr);
        //设置没钱的策略
        eatWhatStrategyContent.setEatWhatStrategy(new NoMoneyStrategy());
        //调用策略方法进行返回
        eatStr = eatWhatStrategyContent.eat();
        System.out.println(eatStr);
    }
}
相关推荐
q***54757 小时前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
7***n759 小时前
API网关设计模式
linux·服务器·设计模式
ZHE|张恒9 小时前
设计模式(七)桥接模式 — 抽象与实现分离,让维度独立扩展
设计模式·桥接模式
电子科技圈11 小时前
IAR与Quintauris携手推进RISC-V汽车实时应用的功能安全软件开发
嵌入式硬件·安全·设计模式·编辑器·汽车·risc-v
Charles_go12 小时前
C#中级39、什么是依赖注入设计模式
java·设计模式·c#
ZHE|张恒16 小时前
设计模式(八)组合模式 — 以树结构统一管理对象层级
java·设计模式·组合模式
明洞日记18 小时前
【设计模式手册011】享元模式 - 共享细粒度对象的高效之道
java·设计模式·享元模式
帅中的小灰灰18 小时前
C++编程观察者设计模式
数据库·c++·设计模式
阿波罗尼亚19 小时前
Head First设计模式(六) 设计原则 命令模式
设计模式·命令模式
大佬,救命!!!21 小时前
C++函数式策略模式代码练习
开发语言·c++·学习笔记·学习方法·策略模式·迭代加深·多文件编译