23种设计模式

一、创建型

1、简单工厂模式

1)定义抽象类

java 复制代码
/**
 * <p>
 * 抽象类
 * </p>
 *
 * @author fcy
 * @since 2025-08-18
 */
public abstract class CashSuper {

    abstract double acceptCash(double money);
}

2)无折扣实现类

java 复制代码
/**
 * <p>
 * 不打折正常类
 * </p>
 *
 * @author fcy
 * @since 2025-08-18
 */
public class CashNormal extends CashSuper{
    @Override
    double acceptCash(double money) {
        return money;
    }
}

3)打折实现类

java 复制代码
/**
 * <p>
 * 折扣类
 * </p>
 *
 * @author fcy
 * @since 2025-08-18
 */
public class CashRebate extends CashSuper{

    private double rebate = 1d;

    public CashRebate(double rebate) {
        this.rebate = rebate;
    }
    @Override
    double acceptCash(double money) {
        return money * rebate;
    }
}

4)满减实现类

java 复制代码
/**
 * <p>
 * 满减类 满多少返多少
 * </p>
 *
 * @author fcy
 * @since 2025-08-18
 */
public class CashReturn extends CashSuper{

    private double moneyCondition = 0.0d;

    private double moneyReturn = 0.0d;

    public CashReturn(double moneyCondition, double moneyReturn) {
        this.moneyCondition = moneyCondition;
        this.moneyReturn = moneyReturn;
    }

    @Override
    double acceptCash(double money) {
        double result = money;
        if (money > moneyCondition) {
            result = money - Math.floor(money / moneyCondition) * moneyReturn;
        }
        return result;
    }
}

5)定义工厂类

java 复制代码
/**
 * <p>
 * 工厂类
 * </p>
 *
 * @author fcy
 * @since 2025-08-18
 */
public class CashFactory {

    public static CashSuper createCashAdapter(String type) {
        return switch(type) {
            case "正常收费" -> new CashNormal();
            case "满300减30" -> new CashReturn(300,30);
            case "打八折" -> new CashRebate(0.8);
            default -> throw new RuntimeException();
        };
    }
}

6)测试类

java 复制代码
public class Test {
    public static void main(String[] args) {
        CashFactory cashFactory = new CashFactory();
        CashSuper cashSuper = cashFactory.createCashAdapter("满300减30");
        CashSuper cashSuper1 = cashFactory.createCashAdapter("打八折");
        double cost = cashSuper.acceptCash(700);
        double cost1 = cashSuper1.acceptCash(200);
        System.out.println(cost);
        System.out.println(cost1);
    }
}

二、结构型

三、行为型

1、策略模式

1)使用简单工厂模式的类

2)创建上下文类

java 复制代码
/**
 * <p>
 * 上下文类
 * </p>
 *
 * @author fcy
 * @since 2025-08-19
 */
public class CashContext {

    private CashSuper cs;

    public CashContext(String type) {
        this.cs = switch(type) {
            case "正常收费" -> new CashNormal();
            case "满300减30" -> new CashReturn(300,30);
            case "打八折" -> new CashRebate(0.8);
            default -> throw new RuntimeException();
        };
    }

    public double getResult(double money) {
        return cs.acceptCash(money);
    }
}

3)测试类

java 复制代码
public class Test {
    public static void main(String[] args) {
        double cost = new CashContext("打八折").getResult(700);
        double cost1 = new CashContext("满300减30").getResult(200);
        System.out.println(cost);
        System.out.println(cost1);
    }
}
相关推荐
workflower1 天前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
ly76891 天前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
略略略咯咯2 天前
(总结)设计模式
设计模式
Cosolar2 天前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g2 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye3 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o3 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
AustinXu4 天前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层
设计模式·团队管理