充血模型与贫血模型

充血模型与贫血模型

  1. 充血模型:对象里既有数据,又有业务逻辑,简单来说就是,对象有属性 + 业务方法
java 复制代码
class Order {
    private double amount;
    private String status;
    
    public void pay() {
        if (status.equals("已支付")) {
            throw new RuntimeException("不能重复支付");
        }
        this.status = "已支付";

        // 支付逻辑
    }
}
  1. 贫血模型:对象里只有数据,没有业务逻辑,简单来说就是,对象有属性 + 只有 getter/setter 方法
java 复制代码
class Order {
    private double amount;
    private String status;

    // 只有 getter/setter 方法
}
java 复制代码
class OrderService {
    public void pay(Order order) {
        if (order.getStatus().equals("已支付")) {
            throw new RuntimeException("不能重复支付");
        }
        order.setStatus("已支付");

        // 支付逻辑
    }
}
相关推荐
aZhe的全栈知识分享4 分钟前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
无心水4 分钟前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
码事漫谈6 分钟前
WorkBuddy 一直更新卡死?两个毛病,一套处理办法
后端
函数小陈7 分钟前
阿里云部署DSH与RAM完成运维
前端·后端
aurora_zjj11 分钟前
一次持续 3 年的 OpenResty 死循环排查:最终定位到 LuaJIT ARM64 的一条汇编指令
后端
智驭未来掌门人13 分钟前
动态平台雷达目标引导系统设计与实现
后端
Bazingga15 分钟前
一次Agent超时熔断设计踩过的坑
后端
Lyy16 分钟前
DevOps平台 — 第十九篇:消息通知与预警的设计与实现
后端·devops·vibecoding
蒸蒸yyyyzwd18 分钟前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Android系统攻城狮20 分钟前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频