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);
    }
}
相关推荐
老蒋每日coding6 小时前
AI智能体设计模式系列(一)—— 提示词链
设计模式·ai编程
sxlishaobin9 小时前
设计模式之模板方法模式
设计模式·模板方法模式
le1616169 小时前
设计模式之单例模式
单例模式·设计模式
Knight_AL9 小时前
从单例模式说起:Java 常见设计模式的理解与实践
java·单例模式·设计模式
Engineer邓祥浩10 小时前
设计模式学习(10) 23-8 装饰者模式
python·学习·设计模式
老蒋每日coding10 小时前
基于LangGraph的AI Agent并行化设计模式详解
设计模式·ai编程
GISer_Jing10 小时前
AI学习资源总结:免费开放,入门至深入,持续更新
人工智能·学习·设计模式·prompt·aigc
Geoking.11 小时前
【设计模式】策略模式(Strategy)详解:把 if-else 变成可切换的算法
java·设计模式·策略模式
老蒋每日coding11 小时前
AI智能体设计模式系列(二)—— 路由模式
人工智能·设计模式
老蒋每日coding12 小时前
AI智能体设计模式系列(四)—— 反思模式
设计模式