关于DDD如何落地的随笔
1.使用EF的Model First的模式进行开发
如果还是先建数据库表的话,脑子里想着就是表的设计原则,关联关系之类的, 生成出的实体不是一个好的领域模型, 所以我们应该先根据业务来建立一个领域模型,当然不知道怎么建模型的话,我们可以根据怎么建表的思路来建模型
2. 每个模型的无参构造函数都设为private或protected,提供一个公有的带参数的构造函数, 可以在这里对参数进行一些验证之类的操作。
3.聚合、实体和值对象
聚合和实体都一一对应着我们数据库的一张表,基本上都是聚合, 对于那种父子表,明细表之类的,业务中不会单独去取的那种表的数据, 比方订单明细表, 我们不会在系统中单独的去查询订单明细,都是先找到订单才去看明细,这时候订单表就是聚合,明细表就建为实体, 聚合有上下文,可以进行查询之类的操作。实体只能在先查到父聚合,在聚合里面进行操作实体。
值对象我们可以理解为表中 那些冗余的数据,这里也要用,那里也要用的字段。可以建成值对象。值对象可以在实体中,也可以在聚合中
4.领域事件
领域事件就是一些通知类的额外异步操作。感觉可以放在消息队列里面的都可以搞成领域事件, 比方下单减库存, 就可以在订单聚合的构造函数里面,发布一个领域事件。
我最近搭的项目框架结构
喜欢的朋友请帮忙点个赞!!!