一、单例模式概述
1.单例模式定义
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式常用于需要控制资源访问或共享资源的清况。
2.单例模式特点
- 唯一实例:单例类只能有一个实例
- 全局访问:通过一个全局访问点获取该实例
- 延迟初始化:实例在第一次被请求时才创建
二、饿汉式单例
所谓饿汉式单例是,不管需不需要该对象,这个对象都会在程序中生成。
public class Employee{
static var emp : Employee = Employee()
private Employee()
{
println("创建对象")
}
public static func createEmp():Employee
{
emp
}
}
main(): Int64 {
var emp1 = Employee.createEmp()
var emp2 = Employee.createEmp()
return 0
}
结果为:
在主函数中创建了两个实例对象,可运行的结果只有一个,故为单例模式。在类中用静态修饰符创建对象再将主构造函数私有,通过静态函数访问,在主函数中通过类名进行访问,根据静态变量只初始化一次,程序只会创建一个对象,然后又因为在类中已经将实例对象初始化,因此不管需不需要这个对象都已经在程序中被创建,故为饿汉式单例。
三、懒汉式单例
所谓懒汉式单例是,需要你创建该对象时,程序再去创建对象。
public class Employee{
static var emp : Employee
static init()
{
println("创建对象")
emp = Employee()
}
public static func createEmp():Employee
{
emp
}
}
main(): Int64 {
var emp1 = Employee.createEmp()
var emp2 = Employee.createEmp()
return 0
}
结果为:
该程序的运行结果也只有一个实例对象,将实例对象用静态变量修饰,在静态构造函数中初始化,静态变量只初始化一次,并且静态构造函数只能有一个而且只执行一次,保证了只创建一个实例对象,并且在类中并没有实例化对象,而是在静态构造函数中进行初始化,所以实现了需要创建该对象时,程序才会去创建该对象。
在实际开发过程中,通常会用到懒汉式单例,但也要根据实际的需求合适选择设计模式。