第二部分:资源库

目录

定义

最佳实践

不好实践

资源库与DAO的区别


定义

   资源库负责聚合对象的增删改查操作,目的是管理聚合的生命周期,严格来说,只有聚合才拥有资源库。

最佳实践

    1.采用面向持久化资源库,每次创建或修改聚合后,都调用资源库中的save()方法或与之类似的方法;

   2.定义符合业务含义的查询接口,但需要控制查询接口的膨胀,需要注意适当的抽象。如 queryOrdersByStatus 而不是queryOrdersByPaidStatus。

不好实践

   1.用DAO来代替资源库。一个DAO主要从数据库表的角度来看待问题,并且提供CRUD操作,给任何模型对象的操作提供了“方便之门”,会在不经意间破坏了领域概念的完整性。很多bug就是给领域对象属性设置不完整、不一致等导致,尤其是DAO方法无限膨胀的情况下,改动代码极其出现缺陷;

  2.资源库承担了业务逻辑,并非仅对领域对象的CRUD操作;

  3.资源库依赖外部服务接口。绝大多情况下,这都是一种坏味道,往往由不合理的聚合根设计导致。但如果把外部服务看成是聚合根的存储方式,也是可以打破原则,切勿滥用.

资源库与DAO的区别

    1.他两是有区别的;   

    2.可以简单的理解为资源库是DAO更加上面的一层,当对聚合CURD的时候,用的是资源库,但资源库调用的底层会调用一个或多个DAO层.资源库也负责聚合到DAO对象的转换,或者DAO到聚合的转换.

你可能感兴趣的:(DDD,领域驱动设计,设计规范,程序人生)