如何防止用例中验证逻辑重复

问题描述 投票:0回答:1

假设我有多个使用 user-id 作为参数的用例,因此必须在执行开始之前验证数据库中确实存在具有该 user-id 的用户。这工作正常,但如果现在发现这些用例将相互使用,例如 CreateUserUseCase 可能会调用 CreateCalendarForUserUseCase,其中两者都想验证用户是否存在,该怎么办?本质上会存在重复的支票。我理解这是否是我遵循此设计所必须付出的代价,但是有没有其他方法可以想到这一点来防止这种重复发生?

我想过也许不使用用例进行重用,而是使用一个服务 createCalendarForUserService 来假设用户 ID 确实指向数据库中的用户,但这意味着我完全抛弃了可重用用例的概念,我觉得它不再是干净的架构了。

validation design-patterns clean-architecture use-case
1个回答
0
投票

我想说,缓存验证结果并重用它是有意义的,这样您就不需要每次需要查找 id 是否有效时都计算验证结果。您可以重用第一次计算的结果,因此拥有一个可以设置开/关的缓存系统是有意义的,如果它打开,则计算一次并在后续引用时重用结果

Clean Architecture

由于如果您要使用缓存系统,则要设置应用程序业务规则,如果是的话,您打算如何使用它,所以我想说,在用例层中,您将有一个操作来检查是否启用了缓存如果是,则搜索缓存的验证结果,在禁用缓存、缓存过期或未找到的情况下,回退到从数据库加载。当然,如果启用了缓存,则将验证结果存储在缓存中,以便可以重复使用。

© www.soinside.com 2019 - 2024. All rights reserved.