gpt4 book ai didi

repository - DDD 存储库可以了解用户上下文吗?

转载 作者:行者123 更新时间:2023-12-03 20:59:25 31 4
gpt4 key购买 nike

假设您要开发一个系统,该系统的实体和域逻辑的可用性高度依赖于用户上下文。通过使单个存储库实例用户上下文感知来处理存储库中的用户上下文敏感性是否有意义?我正在考虑采用这种方法作为一种方式,将用户上下文的依赖从我的实体中拉出来,但我不确定在朝这个方向前进时是否存在我可能没有意识到的陷阱。我计划首先解决这个问题的方法是将 UserContext 参数添加到需要此上下文信息的存储库的构造函数中。另一个明显的选择是将用户上下文信息提供给我的存储库中的每个查询方法,但这可能意味着所有方法中的大多数都需要这样的参数,这反过来会大大增加每个方法调用的冗长性。

另外,我想指出的是,我知道即使我要让存储库知道用户上下文,当服务或实体出于诸如根据用户确定行为之类的原因需要相同的用户上下文信息时,这不一定直接有帮助配置。我也对这些案例的其他解决方案感兴趣,但现在我试图一次解决一件事,所以我首先关注存储库。

任何建议,将不胜感激。

最佳答案

我在这里感觉到一种设计的味道:-)。当它们到达域层时,事物应该几乎被转换为域实体/属性,并且不应该依赖于上下文。我的意思是应该使用上下文来更改/表示实体的新状态。在这里,上下文似乎将用于确定实体将如何持久化。我是否正确理解了这一点?

话虽如此,如果您对上下文的依赖更多是从基础架构的角度而不是业务功能的角度来看,那么拥有上下文敏感的存储库是您提出的正确模型。

为此,您是否可以考虑像 Spring 使用 Hibernate Session 那样通过线程本地传递用户上下文?这样您的 Repository 类的构造函数或方法将减少污染。但是,它确实会稍微降低代码的可读性。

希望有帮助。

关于repository - DDD 存储库可以了解用户上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374176/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com