VIPER架构中Access Token的合理存储位置探讨
VIPER架构中Access Token存储位置的规范判断
结合你给出的VIPER核心组件职责定义,Access Token的存储逻辑应该放在Interactor中处理,原因如下:
符合Interactor的业务逻辑职责
Interactor的核心是承载特定用例的业务逻辑,登录用例的完整流程不仅包括发起网络请求获取Token,还需要将Token持久化存储(这是登录成功后完成业务闭环的必要步骤)。把存储操作放在Interactor里,能保证登录业务逻辑的完整性和内聚性,避免业务逻辑分散到其他组件。遵循单一职责原则
Presenter的职责是处理视图逻辑:接收用户输入、向Interactor请求数据、准备视图展示内容、通知View更新UI。如果把Token存储放到Presenter中,会让它承担非视图相关的业务操作,违背单一职责,导致Presenter职责混乱、难以维护。保持组件边界清晰
VIPER的核心是组件解耦,各组件各司其职。数据持久化(比如KeyChain存储)属于业务逻辑的配套操作,归Interactor管理更合理。Presenter只需要接收Interactor返回的登录成功/失败结果,然后执行对应的视图逻辑(比如跳转到首页、提示错误)即可。
另外补充:KeyChainManager作为专门的持久化工具类,应该被Interactor调用,而非其他组件。后续如果有其他业务场景需要读取Token,也应该通过Interactor或者专门的数据访问层来调用KeyChainManager,避免View/Presenter直接操作持久化层。
内容的提问来源于stack exchange,提问作者Whirlwind
相关产品推荐
相关产品推荐

