小知识
需要了解的一些名词
1、领域驱动设计(Domain Driven Design,简称 DDD)
2、MVC 三层架构 : M 表示 Model,V 表示 View,C 表示 Controller。
它将整个项目分为三层:展示层、逻辑层、数据层。
现在很多项目前后端分离,后端负责暴露接口给前端调用。将后端项目分为 Repository 层、Service 层、Controller 层。其中,Repository 层负责数据访问,Service 层负责业务逻辑,Controller 层负责暴露接口。
贫血模型
只包含数据,不包含业务逻辑的类,就叫作贫血模型(Anemic Domain Model)。
如下:
UserBo 是一个纯粹的数据结构,只包含数据,不包含任何业务逻辑。业务逻辑集中在 UserService 中。我们通过 UserService 来操作 UserBo。换句话说,Service 层的数据和业务逻辑,被分割为 BO 和 Service 两个类中。
// Service+BO(Business Object) //
public class UserService { private UserRepository userRepository; //通过构造函数或者IOC框架注入 public UserBo getUserById(Long userId) { UserEntity userEntity = userRepository.getUserById(userId); UserBo userBo = [...convert userEntity to userBo...]; return userBo; }
}
public class UserBo {//省略其他属性、get/set/construct方法 private Long id; private String name; private String cellphone;
}
这种贫血模型将数据与操作分离,破坏了面向对象的封装特性,是一种典型的面向过程的编程风格。
充血模型
数据和对应的业务逻辑被封装到同一个类中的类称为充血模型。