为什么需要DDD
1、为什么贫血模型在目前国内开发市场当中很流行?
(1)、大多数的时候,业务相对简单,如基于数据库表,SQL语句,结合代码当中进行CRUD就可以完成;
(2)、充血模型在开发的时候,需要更多的思考以及前瞻性,全局性的思考,而大多数开发人员缺乏这样的思考习惯;
(3)、开发人员大多存在对旧有行为的思维习惯与开发过程当中的路径依赖,修改自己是需要成本的事情。
2、为什么贫血模型不太好?
(1)、贫血模型是一种对现实世界的反模式认知习惯,我们人类看事物本来是一个对象总是同时包含属性与行为,比如说人,有身高,有体重(这些叫属性),走路,说话(这些叫行为);
(2)、这种认知习惯的养成,我们就很容易把需要面向现实世界的软件系统开发成一个面积过程的实现,这其实是一种反现实世界的思维习惯;
(3)、当系统复杂度高了之后,如果依然采用贫血模型,更容易导致系统最后做成难以维护的大泥球。
最后,可以参考一下,MartinFowler对贫血模型的观点:https://martinfowler.com/bliki/AnemicDomainModel.html
3、在微服务架构设计当中,DDD为什么更好?
(1)、职责边界清晰,各个微服务的开发人员相互扯皮的现象就会减少很多;
(2)、整个系统架构上,通过对不同子域可以应用不同的服务治理策略,更加灵活;
(3)、通过抽象与封装,防腐层设计,可以更加容易让我们很多相对稳定的核心业务在系统迭代的过程当中不会被入侵,从而更加容易实现真正的:高内聚低耦合;
(4)、因为建立了统一的语言,在复杂系统沟通与建模时,与产品经理或客户们沟通时,信息在传输过程当中的失真率更低,大家更容易在认知上达到统一。