乐趣区

关于golang:使用聚合模式设计领域模型

畛域驱动设计 - 聚合模式

几种宽泛应用的根本元素

  1. 实体
    具备长久化 ID 的对象。
  2. 值对象
    作为值汇合的对象。例子:Money 对象,由币种、金额组成。
  3. 工厂
    负责实现创建对象逻辑的对象或办法。
  4. 存储库
    用来拜访长久化实体的对象。
  5. 服务
    实现不属于实体或值对象的业务逻辑的对象。

聚合

聚合是一个边界内的畛域对象的集群,能够将其视为一个单元。它由根实体和可能的一个或多个其余实体和值对象组成。

模式:聚合

将畛域模型组织为聚合的汇合,每个聚合都是能够作为一个单元进行解决的一组对象形成的图

聚合规定 (点餐零碎)

点餐零碎有很多概念,这里只拿简略的,订单、餐厅、用户,来形容一下规定

    1. 只援用聚合根

      餐厅只援用订单。
      用户对于餐厅,只是订单中的内容

      订单援用餐厅,用户。
      作为关联餐厅、用户,记录各自主键,如有必要,做数据冗余

      用户只援用订单。
      餐厅对于用户,只是订单中的内容信息。

    1. 聚合间援用应用主键

      餐厅只援用订单主键信息。

      订单只援用,餐厅、用户信息。
      比拟非凡的是,对于历史订单,可能须要做其余的数据冗余。因为用户地址信息,餐厅信息可能会变动。

      用户只援用订单主键信息。

    1. 在一个事务中,只创立、编辑、删除一个聚合

      在一个事务中,只对餐厅、订单、用户,其中之一的信息做改变。

      反例:
      更新用户信息,并批改用户订单信息。
      自身这个操作,就是两个操作。

退出移动版