小知識
需要了解的一些名詞
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;
}
這種貧血模型將數據與操作分離,破壞了面向對象的封裝特性,是一種典型的面向過程的編程風格。
充血模型
數據和對應的業務邏輯被封裝到同一個類中的類稱為充血模型。