//单例模式 保证了只有一个实例的存在,这样有利于我们协调系统的整体行为,首先导入需要使用到的界面工具框架
import UIKit
//final 修饰符可以防止类被继承,还可以防止子类重写父类的属性、方法以及下标。该修饰符不能修饰结构体和枚举
final class SigleClass:NSObject{
// 使用static 定义一个静态常量,静态常量在实例调用结束后不会消失,并且保留原值,即其内存空间不会释放,当下次调用实例时,仍然使用常量原有的值
static let shared = SigleClass()
// 为了保持一个单例的唯一性。单例的构造器必须是private的,以防止其他对象也能创建出单例类的实例

private override init(){}

func say() {
print("hello swift")
}



}
SigleClass.shared.say()
//使用静态变量的方式 实现第二个单例模式
final class SecondStringletonClss: NSObject{
static var shared:SecondStringletonClss{
struct Static{
static let instance:SecondStringletonClss=SecondStringletonClss()
}
return Static.instance
}
private override init() {}

func say() {
print("hello swift")
}
}