wangyuheng/Arc

在单体应用中,聚合根与代码访问控制

Opened this issue · 2 comments

举例为3层实体结构 Project 1->N Milestone 1->N Task

为实现高内聚的目的,操作实体时,通过对应的聚合根进行访问操作。

  1. 如何通过访问控制在代码编译层面实现相关控制?比如放在不同的package下,聚合根为public 实体对象为default。如果这样限制,无法访问内部实体的行为操作。比如更新Task的name。 如果放在同一个class中?通过内部类?
  2. 如果存在多层级时,如何控制?如何体现层级、兄弟节点的关系?
  3. 如果Project作为聚合根,会不会变成定义的全部实体全部被划分到一个边界上下文内?

Nest-Based Access Control?

在DDD开发落地过程中,有很多约定需要遵守,比如只能通过聚合根访问不同域。约定总是不靠谱的,所以需要考虑在代码层面进行控制。只将 聚合根 作为public class

在graphql方法中可以通过getSource 获取上级调用对象,是否表明下级可以调用上级对象?