贫血模型 - DDD - The Domain Driven Design

栏目: 后端 · 发布时间: 6年前

内容简介:贫血模型Anemic Model是一种领域模型,其中领域对象包含很少或没有业务逻辑。这个模型最初由Martin Fowler描述,他认为这种做法是反模式。这种反模式的根本恐怖之处在于它与面向对象设计的基本思想相悖; 这是将数据和过程结合在一起。Vaughn Vernon,IDDD,2013年:

贫血模型Anemic Model是一种领域模型,其中领域对象包含很少或没有业务逻辑。这个模型最初由Martin Fowler描述,他认为这种做法是反模式。

这种反模式的根本恐怖之处在于它与面向对象设计的基本思想相悖; 这是将数据和过程结合在一起。

Vaughn Vernon,IDDD,2013年:

贫血领域模型每天都出现在我们行业的各个角落。问题是,大多数开发人员似乎认为这是完全正常的,并且不认识到在他们的系统上使用时会产生严重的副作用。这是一个真正的问题。

因为贫血模型中没有逻辑,因此,负责调用贫血模型的 客户端负责解释领域对象的用途和用途。通常,业务逻辑最终会在名为服务Services等其他类中实现,这些类会转换领域对象的状态。当然,这种方法会导致许多设计问题和缺点。贫血模型导致耦合的大服务

避免贫血领域模型的方法

  • 使用private setters.。如果让模型对象的属性直接由外部客户端直接定义,您将失去使用领域事件的机会,您将不得不在实体外的外部方法中验证您的实体。
  • 始终验证您的实体的状态,您的实体必须自我验证。
  • 避免没有参数的构造函数。当然,您的对象需要一些初始化数据来维持有效状态。
  • 领域服务被开发人员用作真正的银子弹,但最终成为贫血模型的最大原因。
  • 小心ORM,他们负责自动创建域对象,生成真正的公共setter和公共getter容器,这导致了一个贫血模型。
  • 不要使用事务脚本[EAA第110页的P]。
  • 使用OOP,当然程序编程比面向对象编程更容易,请记住正确使用OOP是对付贫血模型的一个很好的补救措施。

为什么人们喜欢贫血模型?

我们的许多行业都是由样本代码追随者组成的,但是,通常,示例代码专注于以最简单的方式演示某些概念,而不必担心良好的设计原则。

过度简化的示例代码(通常演示了几个getter和setter)每天都会被复制,而无需考虑项目。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

走出软件作坊

走出软件作坊

阿朱 / 电子工业出版社 / 2009-1 / 39.80

《走出软件作坊》这本书提供了解决国内小型IT企业发展的过程中会遇到的项目管理问题的若干方法。主要以作者自身多年工作的宝贵经验,来谈软件公司的项目管理和团队建设,包括对中小软件公司软件开发组织结构、团队文化、软件过程管理、团队激励、绩效考核、职业发展规划、未来业界发展趋势、个人素质提升等,具有实际指导意义。主要读者对象是IT企业的研发主管、项目经理和软件开人中同,以及即将到IT企业工作的高校毕业生。一起来看看 《走出软件作坊》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具