美文网首页
领域驱动设计-领域对象的生命周期

领域驱动设计-领域对象的生命周期

作者: 东南枝下 | 来源:发表于2021-11-08 23:00 被阅读0次

    AGGREGATE 聚合

    每个AGGREGATE都有一个根(root),和一个边界(boundary)。边界定义了AGGREGATE内部都有什么,跟则是AGGREGATE所包含的一个特定Entity。对AGGREGATE而言,外部对象只可以引用根,而边界内部的对象之间则可以互相引用

    固定规则,是指在数据变化时必须保持一致性规则,其涉及AGGREGATE成员之间的内部关系。而任何跨越AGGREGATE的规则将不要求每时每刻都保持最新状态。

    此处联想到CAP:
    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
    一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
    可用性(A):保证每个请求不管成功或者失败都有响应。
    分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作

    对AGGREGATE操作,需要注意以下几点:

    1. 根ENTITY具有全局唯一标识,它最终负责检查固定规则。
    2. 边界内对 ENTITY具有本地标识,只在聚集内部才是唯一的
    3. 聚集外部对象不能 引用除聚集根 外 的任何内部对象。聚集根可以传递一个内部对象的副本VO传递出去,这样就不用担心内部对象被外部引用后产生变化。
    4. 只有聚集根才能通过数据库查询获取,所有其他对象必须通过遍历关联来发现 (存疑:这样效率很低吧)
    5. 聚集内部的对象可以保持对其他聚集根的引用
    6. 删除操作必须一次删除聚集内的所有对象
    7. 对聚集内的任何对象做修改时,整个聚集的所有固定规则都必须被满足

    FACTORY

    当客户端创建对象,如果客户端是应用层的一部分,那么指职责就会从领域层泄漏到应用层中。
    创建聚集时要把它作为一个整体,并确保它满足固定规则。
    所以需要一个独立的FACTORY来构建AGRGEGATE,把聚集根的引用传递出去。
    这个FACTORY有些简单的情况下也可以使用构造函数,复杂的装配可以用FACTORY METHOD。

    REPOSITORY

    重建:使用已存储的数据创建实例的过程称为重建。
    FACTORY负责制造新对象,REPOSITORY负责查找已有对象。
    只为那些确实需要直接访问的AGGREGATE提供REPOSITORY,让客户始终聚焦于模型。

    相关文章

      网友评论

          本文标题:领域驱动设计-领域对象的生命周期

          本文链接:https://www.haomeiwen.com/subject/uqepzltx.html