DDD领域驱动设计和充血模型

贫血模型

什么是贫血模型

贫血模型就是缺血了,缺东西,也就是只有数据但是没有业务逻辑或者有业务逻辑但是没有数据。

比如你有一个计算类,他有一个加法计算的方法。但是他不持有计算的数据。

和贫血模型对应的就是充血模型。

什么是充血模型

充血模型就是不缺血了,有数据同样有业务逻辑。

比如你的计算类现在不只有加法计算,还有需要的数据。

我们现在进行的开发基本上都是基于贫血模型开发的。

比如一个电商系统,有商品模型,但是一个商品模型只有商品的基本信息,数据。如果需要获取一个商品的总价,那么我们需要调用model里面的一个方法来计算。这就是典型的贫血模型。

如果我们在商品模型里面提供一个计算总价的方法。把数据和业务逻辑放在一起,这就是充血模型。

充血模型

充血模型要将数据和业务高度内聚在一个类中,使得类更加饱满,也是高内聚低耦合的一种实践。不过充血模型需要更好的设计整个类才能实现。因为要考虑到扩展性,测试性,可读性,复用性等。充血模型注定比贫血模型更加耗费时间,更加难以实现。

扫描二维码关注公众号,回复: 11195345 查看本文章

现在更推崇敏捷开发。快速实现需求,慢慢迭代升级。如果使用充血模型也容易搞得四不像。也因此贫血模型更让人喜欢。贫血模型也更容易设计和实现,日常开发中随便写的都是贫血模型。而充血模型需要进行好好的设计。那怎么设计充血模型呢?可以根据DDD领域驱动设计来实现。

领域驱动设计DDD

DDD的概念很早就有了,但是一直没有火起来。现在又出现了充血模型的概念。

DDD的核心思想其实就是根据不同的领域,功能来设计建模,划分模块。微服务的划分就可以借鉴DDD的思想,根据不同的业务领域来划分。

DDD可以用来指导我们如果做软件设计,但是想要用好DDD,需要对自身的业务足够理解,足够熟练。

领域是一个组织所做的事情以及其包含的一切。领域驱动设计就是从自身的领域出发,分析自身领域内的一切关联关系,根据其设计我们的软件。构造充血模型。也就是充血模型是和业务高度耦合的,完全从自身的领域出发进行设计。可以先将自身的领域细分出多个子领域,然后再每个子领域中设计出各自的领域模型。也就是充血模型。

比如电商领域可以分成用户,商品,订单,物流等子领域。然后设计出各自的实体对象,根据全局领域的上下文来分析需要承担哪些责任也就是哪些数据和业务逻辑。

原创文章 84 获赞 7 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Thepatterraining/article/details/105870283