贫血模型 vs 充血模型:前端业务逻辑该写在 Service 层还是 Entity 类中?
各位开发者朋友,大家好!今天我们来聊一个看似简单、实则非常关键的话题——贫血模型(Anemic Domain Model)与充血模型(Rich Domain Model)的区别,以及在实际项目中,业务逻辑到底应该放在 Service 层还是 Entity 类中?
这个问题不是“非黑即白”的选择题,而是一个需要结合团队规模、项目复杂度、维护成本和未来演进能力的综合判断题。如果你正在设计一个系统架构,或者已经在用某种模式但感到困惑,那这篇讲座式的文章非常适合你。
一、什么是贫血模型?什么是充血模型?
先从定义讲起。
贫血模型(Anemic Domain Model)
Entity 只有属性 + Getter/Setter,没有行为;所有业务逻辑都在 Service 层处理。
典型表现:
// User.java - 贫血模型示例 public class User { private Long id; private String name; private Integer age; private String email; // getter/setter 省略... } // UserService.java - 所有业务逻辑都在这里 @Service public class UserS