gpt4 book ai didi

ios - 在 iOS 应用的架构方面需要帮助。是否使用单例?

转载 作者:行者123 更新时间:2023-12-01 17:11:23 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

4年前关闭。




Improve this question




我有课ServiceClass , 此类中的闭包函数,例如 LoginViaEmail , 调用 APILayer . APILayer来电HttpLayerJSONHandler并将输出返回到 ServiceClass . ServiceClass进一步返回一些信息到ViewControllercompletionblock收到。

我的问题是

  • 我可以做ServiceClass作为辛格尔顿?但是后来每个人都说他们是反模式而不是 good approach .
  • 如果他们那么糟糕,为什么Apple使用它们?例如 NSFileManager、NSWorkspace、UIApplication 等,
  • 如果不是 Singleton,那我应该使用什么?创建 ServiceClass 的实例每次我使用它?这不会占用太多内存吗?
  • 最佳答案

    如果你想编写有效的、独立的和非耦合的测试,不要使用一堆单例。如果您不关心测试,那么单例就可以了。

    这是我使用的中途架构:

  • 拥有一个拥有所有服务的整体 App 或 Container 类,并创建它们,并根据需要将它们相互注入(inject)(因此您的服务具有所有依赖项作为属性,并且不访问任何静态)
  • 让您的 UIAppDelegate 类拥有容器的单个实例。这是应用程序中唯一的“单例”。
  • UIViewControllers 等通过 UIAppDelegate 在 vi​​ewDidLoad 时获取对 Container 及其服务的引用,并将它们保存到本地属性中。例如,他们自己注入(inject)。让它自动化会很好。
  • 测试可以根据需要设置和拆除容器或单个服务,因为知道其他测试无法影响它们。
  • 关于ios - 在 iOS 应用的架构方面需要帮助。是否使用单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44671130/

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