我之前一直对领域驱动设计(DDD)相关的知识有零散的认识,没有系统性地学习过。最近抽空系统地学习了一下,发现这块知识比较抽象,很难读懂。加上我自己的理解,我整理了一些知识,希望能够分享给大家
第一期先讲些了DDD的一些基础概念
充血模型
在我们以往的开发模式中,Model 对象通常只包含属性变量和 get/set 方法,这种模式被称为“贫血模型”。举个例子,比如订单的作废方法,在传统的做法中,我们会在 Service 层编写业务逻辑,如下所示:
@Data
class Order {
private Long id;
private Date cancelDate;
private Integer Status;
}
@Service
class OrderService {
// 传统写法,service臃肿
public void cancel(Long id) {
Order order = new Order(id);
order.setCancelTime(new Date());
order.setStatus(StatusEnum.CANCELED.getCode());
orderDAO.update(order);
}
}
如果我们使用充血模型进行改造
@Data
class Order {
private Long id;
private Date cancelDate;
private Integer Status