设计模式——行为型——策略模式Strategy

Q:策略模式的特点

A:

  1. 具体算法从具体的业务方法中独立出来
  2. 策略模式是同行为的不同实现

Q:什么时候使用策略模式

A:多个if-else使用策略模式

收费对象类

java 复制代码
public class CashContext {
    private CashStrategy cashStrategy;

    public double getMoney(double money) {
        return cashStrategy.acceptCash(money);
    }
}

收费策略接口

java 复制代码
public interface CashStrategy { double acceptCash(double money); }

正常收费类

java 复制代码
public class NormalCash implements CashStrategy {
    @Override
    public double acceptCash(double money) {
        return money;
    }
}

打折收费类

java 复制代码
public class RebateCash implements CashStrategy {
    private double discounts = 10;

    @Override
    public double acceptCash(double money) {
        return money * discounts / 10;
    }
}

返利收费类

java 复制代码
public class ReturnCash implements CashStrategy {
    private double condition = 0;
    private double rebate = 0;

    @Override
    public double acceptCash(double money) {
        if (money >= condition) {
            money -= Math.floor(money / condition) * rebate;
        }
        return money;
    }
}

演示类

java 复制代码
public class Demo {
    public static void main(String[] args) {
        String discounts = "满300减100";
        CashContext cc = new CashContext();

        switch (discounts) {
            case "正常收费":
                cc.setCashStrategy(new NormalCash());
                break;
            case "打9折":
                cc.setCashStrategy(new RebateCash(9));
                break;
            case "满300减100":
                cc.setCashStrategy(new ReturnCash(300, 100));
                break;
        }

        double price = 400;
        double money = cc.getMoney(price);

        System.out.println("优惠后的费用为:" + money);
    }
}
相关推荐
PersonalViolet3 小时前
模板方法模式实战:重构Agent工具审批,告别重复代码
设计模式·agent
老码观察3 小时前
设计模式实战解读(五):策略模式——干掉 if-else 的优雅方案
java·设计模式·策略模式
解决问题no解决代码问题4 小时前
设计模式分类介绍
java·开发语言·设计模式
烬羽4 小时前
从 Python List 到 LLM 接口:一条被忽视的 AI 入门捷径
设计模式
我爱cope5 小时前
【Agent智能体8 | 反思设计模式-大语言模型反思机制的四个演进阶段】
人工智能·设计模式·语言模型
我爱cope6 小时前
【Agent智能体9 | 反思设计模式-提示词工程的进阶法则】
人工智能·设计模式·语言模型·职场和发展
sinat_2554878120 小时前
IDEA:查找文件/类
java·ide·设计模式·intellij-idea
cg.family1 天前
Java设计模式的七大原则
java·设计模式
deephub1 天前
Agentic 设计模式拆解:6 种结构的优缺点与应用场景
人工智能·设计模式·大语言模型·多智能体
雪度娃娃1 天前
行为型设计模式——访问者模式
设计模式·访问者模式