Swift 单例模式(Singleton)

在本教程中,我们将借助实例了解 Swift 单例模式。

在 Swift 中,Singleton 是一种设计模式,它确保类只能有一个对象。这样的类称为单例类。

要创建单例类,我们需要遵循一些规则

1.创建私有初始化初始化让我们可以实例化类的对象。而且,使类的初始化限制了从类外部创建类的对象。

  1. class FileManager {
  2. ...
  3. // create a private initializer
  4. private init() {
  5. }
  6. }
  7. // Error Code
  8. let obj = FileManager()

这里,FileManager 类的初始化是私有的。因此,当我们试图在类之外创建 FileManager 的对象时,会产生一个错误。

2.创建静态类型单例对象

在单例类中,我们创建该类的单个静态类型对象。使对象成为静态的允许我们使用类名访问对象。

  1. class FileManager {
  2. // static property to create singleton
  3. static let fileObj = FileManager()
  4. ...
  5. }
  6. // access the singleton
  7. let data = FileManger.fileObj

这里,我们使用类名 FileManager 访问 fileObj 对象。


实例:Swift 单例

  1. class FileManager{
  2. // create a singleton
  3. static let fileObj = FileManager()
  4. // create a private initializer
  5. private init() {
  6. }
  7. // method to request file
  8. func checkFileAccess(user: String) {
  9. // condition to check username
  10. if user == ("@programiz.com") {
  11. print("Access Granted")
  12. }
  13. else {
  14. print(" Access Denied")
  15. }
  16. }
  17. }
  18. let userName = "@programiz.com"
  19. // access method
  20. let file = FileManager.fileObj
  21. file.checkFileAccess(user: userName)

结果如下:

  1. Access Granted

在上面的实例中,我们创建了一个单例类 FileManager。因为它是一个单例类,所以我们将初始化设置为私有,并创建了一个名为 fileObj 的静态对象。

注意这一行,

  1. var file = FileManager.fileObj
  2. file.checkFileAccess(user: userName)

在这里,我们使用类名 FileManager 访问了对象 fileObj。然后,我们访问了方法 checkFileAccess()

注意:设计模式类似于我们的代码库,其中包含世界各地程序员共享的各种编码技术。

重要的是要注意,只有少数场景(如文件管理、API 请求)才有意义。如果您不确定是否使用单例,我们建议您避免完全使用单例。了解更多:单例模式有什么不好?