为有牺牲多壮志,敢教日月换新天。

[Swift实际操作]八、实用进阶-(1)Swift语言中的两种单例模式实际操作

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

 

本文降温你解析常见的单例模式。
单例模式可以保证一个类仅有一个实例,同时这个类还必须提供一个访问该类的全局访问点。

首先导入需要使用到的界面工具框架

import UIKit

单例对象保证了只有一个实例的存在,
这样有利于我们协调系统的整体行为。
final修饰符可以防止类被继承,还可以防止子类重写父类的属性、方法以及下标。
该修饰符不能修饰结构体和枚举。

 1 final class SingleClass:NSObject
 2 {
 3 //使用static修饰符,定义一个静态常量。静态常量在实例调用结束后不会消失,并且保留原值,
 4 //即其内存空间不会被释放。当下次调用实例时,仍然使用常量原有的值
 5     static let sared = SingleClass()
 6 //为了保持一个单例的唯一性,单例的构造器必须是private的。
 7 //以防止其他对象也能创建出单例类的实例。
 8      private override init(){ }
 9 //添加一个实例方法,用来实现具体的业务功能
10      func say()
11     {
12        print("Hello,Strengthen!")
13      }
14 }

这样就完成了第一个单例模式的示例,当需要获得示例的对象时,只需调用其静态属性以获得单例对象。
然后调用单例对象的实例方法即可。

SingleClass.shared.say()

接着使用静态变量的方式,实现第二个单例模式。

 1 final class SecondSingletonClass: NSObject
 2 {
 3 //使用static修饰符,定义一个静态变量,在第一个示例中定义的是一个静态常量
 4 //static let sared = SingleClass()
 5     static var shared: SecondSingletonClass()
 6    { 
 7 //借助结构体来存储类型的变量(class var),并使用let修饰符来保证线程的安全
 8       struct static
 9      {
10         static let instance: SecondSinglectonClass = SecondSinglectonClass()
11       }
12 //然后返回结构体的静态常量
13       return Static.instance     
14     } 
15 //为了保证一个单例的唯一性,单例的构造器必须是私有的。
16 //以防止其他对象也能创造出单例类的实例
17      private override init(){ }  
18 //同样添加一个实例方法,用来实现具体的业务功能
19      func say()
20     {
21        print("Hello,Strengthen!")
22      }
23 }

这样就完成了第二个单例模式的示例。当需要获得示例对象时,
只需调用其静态属性以获得单例对象,然后调用单例对象的实例方法即可。

SecondSingletonClass.shared.say()
posted @ 2018-10-17 13:30  为敢技术  阅读(409)  评论(0编辑  收藏  举报