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);
    }
}
相关推荐
a里啊里啊12 分钟前
软考-软件评测师:知识点整理(七)——软件工程
设计模式·软件工程·软考·uml·结构化开发·软件评测师·软件模型
ximu_polaris40 分钟前
设计模式(C++)-行为型模式-策略模式
c++·设计模式·策略模式
geovindu2 小时前
go: Observer Pattern
开发语言·观察者模式·设计模式·golang
z小天才b21 小时前
Java 设计模式完全指南:从入门到精通
java·开发语言·设计模式
kyriewen1121 小时前
Next.js:让你的React应用从“裸奔”到“穿衣服”
开发语言·前端·javascript·react.js·设计模式·ecmascript
A-Jie-Y1 天前
JAVA设计模式-工厂方法模式
java·设计模式
A-Jie-Y1 天前
JAVA设计模式-单例模式
java·设计模式
geovindu1 天前
go: Iterator Pattern
开发语言·设计模式·golang·迭代器模式
Ting.~1 天前
软件设计师备考笔记【day2】-UML 图解 | 面向对象 | 设计模式
笔记·设计模式·uml
qcx231 天前
深入解析,什么是Agent,Agent的 架构与设计模式
设计模式·架构