gpt4 book ai didi

swift - 调用与我的数据库交互的方法的最佳位置在哪里?

转载 作者:行者123 更新时间:2023-11-28 05:41:04 24 4
gpt4 key购买 nike

我正在创建一个与 Firestore 数据库交互的应用程序。到目前为止,我有一个单例类 DatabaseManager,它具有与 Firestore 数据库相关的所有方法(即 get/post 方法)。

我有一个名为 User 的用户模型,它具有诸如 nameemailphotoURL 和一些特定于应用程序的属性。任何用户都可以编辑他们的个人资料以更新来自名为 EditProfileViewController 的 View Controller 的信息。

现在我的问题是:最好调用 DatabaseManager.shared.updateInfo(forUser: user)(其中 userUser 实例)来自 EditProfileViewControllerUser 或其他地方?

抱歉,如果这是一个明显的问题,但应用程序中会有很多点需要类似的逻辑,所以我想知道什么是最好的设计。此外,我确信这个问题与 MVC 的关系比与 Firebase/Swift 的关系更大。

最佳答案

几个想法:

  1. 与其直接使用 DatabaseManager.shared.update(for:) 访问单例,不如使用数据库管理器的属性,使用 初始化/注入(inject)它>DatabaseManager.shared,并在需要与数据库交互时使用该引用,例如 dataManager.update(for:)。目标是允许您的单元测试在必要时模拟数据库管理器。

  2. 我不倾向于让 View Controller 直接与 DatabaseManager 交互。我们中的许多人将直接与 UIKit/AppKit 对象交互的 View Controller 视为更广泛的 MVC/MVP/MVVM 等“V”的一部分。我们经常将业务逻辑(包括与数据库管理器的交互)从 View Controller 中提取出来。

    我个人也不会将它埋在 User 对象下。我会把它放在数据库管理器的扩展中,并从 View 模型、演示者或任何你个人想用业务逻辑调用该对象的东西调用。

关于swift - 调用与我的数据库交互的方法的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56717533/

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