DDD编程之利用封装和继承提高代码质量

288 阅读1分钟

利用封装和继承,进一步提高了代码质量。可以通过两个层面来提高封装性。

第一个层面是 API 的封装。

对外暴露出每个 API 必须的参数,从而缩小了接口,提高了封装性。

第二个层面是领域对象的封装。

分析了哪些属性是不需要修改的,把这些属性变成只读的,从而缩小了对象的接口。 另一方面,我们用表意接口封装了状态属性,使外界不需要直接关心状态转换的细节,同时消除了特性依恋的坏味道。

另外,我们还可以利用继承减少代码的重复。

这里没有唯一正确的方式,重要的是根据实际情况进行权衡。

编程风格回顾

第一,领域对象不访问数据库。目的是使领域对象和数据库解耦,便于维护和测试。

第二,领域服务只能读数据库。在实现一些业务规则时,需要访问数据库中的数据,因此领域服务需要读数据库

第三,应用服务可以读写数据库。比如更新一个对象前,要把这个对象先从数据库中读出来;创建或修改对象后,要存回数据库,这些本身都没有领域逻辑。

第四,用 ID 表示对象之间的关联。

第五,领域对象有自己的领域服务。

第六,在以上前提下利用封装和继承。

极客时间《手把手教你落地DDD》第12课学习笔记 Day12