充血模型与贫血模型

充血模型与贫血模型

  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("已支付");

        // 支付逻辑
    }
}
相关推荐
foggyprojects1 分钟前
客户说“销售额”,系统怎样落到订单含税金额或开票含税销售额?
后端
码农进化录4 分钟前
Java 程序员的 AI 进化论 | 用 AI 生成 Spring Boot 脚手架,省下两小时重复劳动
java·spring boot·openai
Neolnfra9 分钟前
使用 Netdata 给服务器增加一个实时监控面板
运维·服务器
匠测AI说10 分钟前
Selenium 工作原理深度解析:从架构到实践
selenium·测试工具·架构
行业研究员13 分钟前
TDSQL-C:云原生架构与AI能力解析
人工智能·云原生·架构·云原生数据库·ai能力解析
名字还没想好☜14 分钟前
Java 用 MethodHandle 替代反射:调用性能实测、invokeExact 的坑与缓存
java·开发语言·缓存·反射·methodhandle
SMF191916 分钟前
【Linux】完美解决缩略图工具gm调用java.io.FileNotFoundException: gm问题
java·开发语言·python
念何架构之路22 分钟前
路由注册:RouterGroup(routergroup.go)
开发语言·后端·golang
小当家.10525 分钟前
LLM服务缓存与连接池管理:三层缓存架构与ChatClient池化
java·后端·spring·缓存·llm·agent
@松30 分钟前
STM32F103C8-GPIO—位带操作学习
stm32·嵌入式硬件·学习