教程设计模式— OOP的功能(第2部分)

先决条件—本博客系列需要具有面向对象编程的中级专业知识。 您应该具有有关类,对象,构造函数,继承,值和引用类型的基本知识。 通过从头到尾阅读本系列文章,中级者将获得知识,专家将增强其知识。

单身人士班

在面向对象的编程中,单例类是在应用程序或项目的整个生命周期中只能有一个对象的类。

Singleton设计模式是iOS应用程序生命周期代码的一部分。 例如,在iOS项目中, UIApplication类是单例类的最佳示例,该类由iOS系统在应用启动时创建,并作为application(_:didFinishLaunchingWithOptions:)方法中的参数传递给AppDelegate。

有两种类型的Singleton设计模式。

  1. 纯单设计模式
  2. 半单设计模式

纯单设计模式:

  • 在这种模式下,不允许使用纯单身类功能的程序员创建该类的实例。 程序员只能使用该类的预定义实例来调用单例类可用的方法和访问属性。
  • 在应用程序启动期间,将使用创建该类的开发人员提到的预定义参数自动创建纯单类的对象。
  • 纯单类必须标记为final,以避免继承混乱。 迅速地,您也可以使用结构来实现相同的概念。
  • 程序员不能继承纯单类。 当您尝试快速继承任何类时,必须调用超类的构造函数。 在pure-singleton类中不可能调用超类的构造函数,因为pure-singleton类的所有构造函数始终被标记为private

让我们通过以下示例以一种简单的方式来理解这种设计模式。

问:什么时候应该使用第一个,而另一个应该使用“纯-单一设计模式”或“半-单一设计模式”呢?

这完全取决于您的班级职责。 如果您在项目中创建了singleton类,并且需要在某个时候更改某些属性,或者您想通过将来添加新方法来给类增加更多责任,并且还需要为其测试用例提供新的模拟数据添加方法后,应该使用半单例设计模式。

如果创建了类,则单元测试已经完成,并且想要通过框架或库进行发布,则可以采用纯单设计模式。 因为您创建了该类,并且其他开发人员将使用它,所以对单例类的单元测试是发布前的责任,而不是使用它的开发人员的责任。