仓颉设计模式-单例模式

一、单例模式概述

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
}

结果为:

        该程序的运行结果也只有一个实例对象,将实例对象用静态变量修饰,在静态构造函数中初始化,静态变量只初始化一次,并且静态构造函数只能有一个而且只执行一次,保证了只创建一个实例对象,并且在类中并没有实例化对象,而是在静态构造函数中进行初始化,所以实现了需要创建该对象时,程序才会去创建该对象。

在实际开发过程中,通常会用到懒汉式单例,但也要根据实际的需求合适选择设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值