Swift中单例模式的替代方案是什么?

4
我正在开发一款应用程序,其中有一个ContentManager类。该类从捆绑包中迁移文件,并在首次打开应用程序时执行其他检查。它在一长串ViewController的最后使用。根据我的观察,有两种实现方法:
  1. 在第一个ViewController中实例化该类,并将其通过segue传递到最终的ViewController。
  2. 在第一个ViewController中创建一个singleton sharedInstance,并在需要时使用该sharedInstance访问它。
创建singleton似乎更加简洁和简单。但是,我已经阅读了很多关于单例的不好之处。我想知道是否有一些替代的方法可以在不使用单例或在所有视图控制器之间混乱地传递实例的情况下完成这个任务?
非常感谢。

1
欢迎来到Stack Overflow。这似乎更像是一个观点问题而不是一个编程问题。您认为单例模式“不好”的具体原因是什么?由于您的ContentManager类在应用程序中永远不会有多个实例,因此它似乎是单例模式的理想候选者。 - Ian MacDonald
嗨Ian,感谢您的快速回复。我已经阅读了隐藏依赖项是不好的,并且相当于全局变量等等。很高兴听到它作为单例模式似乎并不是一个问题,我真的很担心使用它可能是糟糕编码的症状或其他什么问题。 - Mason
Swift更倾向于函数式编程,全局作用域并不是一个脏词。我见过很多例子的千层饼代码,因为有人试图在学术上正确,因此避免使用单例模式。你的情况似乎是单例模式的一个好案例,你不应该感到羞愧 :) - Georg Tuparev
谢谢Georg,我会坚持使用单例模式,现在我知道它不是罪恶的了 :) - Mason
1个回答

1
这是一篇博客,可能会对你正在寻找的内容有所帮助。

链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接