DDD碎片记录 05. 充血模型的优点

订单充血模型设计图

充血模型的概念

将领域模型的原貌直接转换为程序中领域对象的设计,这时,各种业务操作就不再在服务中实现了,而是在领域对象中实现,如【订单充血模型设计图】所示,在程序设计时,既有父类的订单,又有子类实物订单,虚拟订单。并且,在领域对象中的方法,也同样保留到了程序设计的实体对象中,这样通过继承,虽然实物订单,虚拟订单都有订单履约,但实物订单的履约与虚拟订单的履约是不一样的。虽然在充血模型中也有订单service,里面也有订单履约方法,但是充血模型的service只干一件特别简单的事,那就是在接收到用户的请求后,就直接去调用实体对象中的相应方法,其他的什么都不干。这样订单service不需要去关注现在调用的是实物订单的订单履约方法,还是虚拟订单的订单履约方法,只需要订单履约就行了。如果当前拿到的是实物订单就执行实物订单的订单履约方法,如果拿到的是虚拟订单就执行虚拟订单的订单履约方法。当需求增加一个服务订单时,就只需要增加一个服务订单的子类,重载会员订单履约方法,而订单service不需要做任何修改,变更的维护成本就大大降低了。

充血模型设计的好处

  1. 保存了领域模型的原貌,直接转换成程序设计,当领域模型在随业务做大幅度调整时,可以直接映射成程序的变更。代码修改起来比较直接。
  2. 充血模型保持了对象的封装性,是的领域模型在面临多态,继承等复杂结构时,易于变更。

版权声明:
作者:玉兰
链接:https://www.techfm.club/p/43892.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>