最近在看Eric Evans的领域驱动设计,本博文目的是记下该书籍的一些感悟,注意,因为不想重复造轮子通常我理解完一些概念后会从网上加以确认,然后可能会截取其他博主的定义和图片,请不要说我抄袭。
DDD最重要的概念,首先是聚合、还有聚合根
聚合:
聚合,它通过定义对象之间清晰的所属关系和边界来实现领域模型的内聚,并避免了错综复杂的难以维护的对象关系网的形成。聚合定义了一组具有内聚关系的相关对象的集合,我们把聚合看作是一个修改数据的最小原子单元。
聚合根:
聚合根,每个聚合都有一个根对象,根对象管理聚合内的其他子对象(实体、值对象);聚合之间的交互都是通过聚合根来交互,不能绕过聚合根去直接和聚合下的子实体进行交互。
上面的例子中,Car、Wheel、Position、Tire四个对象构成一个聚合,其中Car是聚合根;Customer也是聚合根,Customer不能直接访问Car下的Tire(子实体),而是只能通过聚合根Car来访问。
聚合的一致性:Eventual Consistency
上面表达了一个关于聚合的一致性设计原则:聚合内的数据修改,是ACID强一致性的;跨聚合的数据修改,是最终一致性的。遵守这个原则,可以让我们最大化的降低并发冲突,从而最大化的提高整个系统的吞吐。
然后是三个模式:Entry Object,Value Object,Service Object,Module