|
|
1
30
我要说“是的”,但要知道,我和我工作过的每个人都以同样的理由要求同样的事情…… “马蒂,你不是在第四维度思考。” 让我们稍微简化一下,坚持使用构造函数,而不是先创建方法:
在下面,您的项目存储库总是存储一个有效的所有者(
现在,关于如何根据需要重新填充一个编辑器的项目,您有两个选择,这取决于您要做什么。直库说你想要:
但是放在哪里呢?不在项目或编辑器内部,你是对的,否则他们将不得不访问存储库,这是不好的。上面的代码片段是松散耦合的,但不能单独重用。您刚刚达到了存储库模式的限制。
接下来是应用程序的适配器层,具有共享的存储库源(
基本上,一旦您的getall、getbyid、add、update、remove对象存储库完成,您就必须将关联单独保存,并将对象/层层次结构向上移动到适配器、缓存和业务逻辑等有趣的部分。( “哦,我的天!” ) |
|
|
2
4
如何将责任划分为编辑所有者和编辑成员? 在不了解您的领域的情况下,我可以想象他们有不同的职责——例如,编辑所有者可能相当富有(并且可能是聚合根),但项目可能只需要了解其成员的有限数量,因此编辑成员对象可能很轻。 这些域对象也可能与用户相关,但这将出现在另一个上下文中。 这有帮助吗,还是只是让事情变得更复杂? |
|
|
3
3
这取决于应用程序的需要。如果为给定的编辑器加载所有项目是一个大问题,那么尝试像 Virtual Proxy . 关于懒散地加载项目的成员编辑器,如果您使用虚拟代理,我不会看到用editorrepository插入代理的问题,因为我不认为代理是域的一部分。 如果你把总数分开,你可以调查 Unit of Work 模式作为原子性的一种解决方案。不过,这个问题并不是DDD独有的,我相信还有其他解决方案可以解决事务行为。 |
|
|
4
0
这里有两种不同的关系,一种是所有权关系,另一种是会员关系。 所有权关系是简单的一对多(每个项目一个所有者)。成员关系是多对多的(多个编辑器按项目,多个项目按编辑器)。 您可以在项目类上提供一个所有者属性,并在ProjectRepository上提供一个方法,以获取特定编辑器拥有的所有项目。 对于多关系,在项目类上提供一个members属性,在ProjectRepository上提供一个方法,以获取包含指定编辑器的所有项目作为成员。 似乎编辑器和项目都是实体,我可能会拆分聚合,但在您的上下文中,这些术语可能具有特定的含义,使其成为聚合的子实体。 |
|
|
livthomas · 如何在Angular应用程序中延迟加载库 8 年前 |
|
|
Sameer · 为延迟加载的模块创建公共模块 8 年前 |
|
|
Philip Feldmann · 帆。js延迟加载模型 8 年前 |
|
|
Perp · 如何将Web包中的节点模块与异步块分离? 8 年前 |
|
|
Bob Ramsey · 需要关于延迟加载mat手风琴内容的帮助 8 年前 |
|
|
JSON · 如何将子组件设置为路由器出口的默认路由?[副本] 8 年前 |