失血模型仅仅包含数据的定义和getter/setter方法,业务逻辑和应用逻辑都放到服务层中。这种类在Java中叫POJO。
action
service: 核心业务(复杂度:重)
model:简单Set Get
dao :数据持久化
- @Setter
- @Getter
- public class Commodity {
-
- private Long commodityId;
-
- private String commodityName;
-
- }
-
-
- @Setter
- @Getter
- public class Order {
-
- private Long orderId;
-
- private Long commodityId;
-
- private Date createTime;
-
- }
贫血模型中包含了一些业务逻辑,但不包含依赖持久层的业务逻辑。这部分依赖于持久层的业务逻辑将会放到服务层中。
action
service :简单服务组合、事务管理(复杂度:中)
model:Set Get的基础上添加简单逻辑处理(复杂度:中)
dao:数据持久化
- @Setter
- @Getter
- public class Commodity {
-
- private Long commodityId;
-
- private String commodityName;
-
- }
-
-
- @Setter
- @Getter
- public class Order {
-
- private Long orderId;
-
- private Long commodityId;
-
- private Commodity commodity;
-
- private Date createTime;
-
- public Order(Commodity commodity) {
- this.commodity = commodity;
- }
-
- }
-
- public class OrderService {
-
- @Resource
- private OrderMapper orderMapper;
-
- @Resource
- private CommodityMapper commodityMapper;
-
-
- public Order getOrderById(Long orderId) {
- Order order = orderMapper.getById(orderId);
- order.setCommodity(commodityMapper.getById(order.getCommodityId()));
- return order;
- }
-
- }
充血模型中包含了所有的业务逻辑,包括依赖于持久层的业务逻辑。使用充血模型的领域层是依赖于持久层。
action
service :简单服务、事务管理(复杂度:中-)
model:Set Get的基础上添加复杂逻辑处理(复杂度:中+)
- @Setter
- @Getter
- public class Commodity {
-
- private Long commodityId;
-
- private String commodityName;
-
- }
-
-
- @Setter
- @Getter
- public class Order {
-
- private Long orderId;
-
- private Long commodityId;
-
- private Commodity commodity;
-
- private Date createTime;
-
- @Resource
- private CommodityMapper commodityMapper;
-
- public Commodity getCommodity() {
- return commodityMapper.getById(this.commodityId);
- }
-
- }
-
- public class OrderService {
-
- @Resource
- private OrderMapper orderMapper;
-
- public Order getOrderById(Long orderId) {
- return orderMapper.getById(orderId);
- }
- }
胀血模型就是把和业务逻辑不想关的其他应用逻辑(如授权、事务等)都放到领域模型中。
action
model:Set Get的基础上添加复杂逻辑处理、事务处理(复杂度:重+)