当前位置: 首页 > article >正文

Swift——单例模式

单例是软件设计常用的一种模式,它的核心结构中只有一个被称为单例的特殊类,通过单例模式可以保证应用该模式的类只有一个实例化对象,其作用就是能够使类中的一个对象成为系统中的唯一实例。

单例的特点:

  • 某个类只有一个实例化对象
  • 必须自动创建该实例对象
  • 必须向整个系统提供该实例对象

单例的优缺点:

优点:

  • 单例模式可以阻止其它对象实例化其单例对象的副本,保证所有对象都只能访问该唯一实例对象
  • 因为类控制了实例化过程,所有类可以更加灵活的更改实例化过程

缺点:

  • 虽然单例模式实例对象只有一个,但是如果每次对象请求引用时都要检查是否存在类的实例,这仍然需要一定的开销,可以通过静态初始化解决该问题。
  • 使用单例对象时,开发者必须记住该类不能实例化对象。
  • 不能解决删除单个对象的问题

在单例模式中,通常会把构造器设置成私有,这样可以防止从类的外部实例化对象,代码示例如下:

//单例
class SingleLeton {
    
    static let singleLeton = SingleLeton()
    
    private init() {
        print("私有的构造方法")
    }
    
    var count = 0
    static var a = 1
    func visit(){
    }
    
}

在示例中,类中使用了一个静态常量singleLeton来存储单例对象,同时对构造器会sh设置成私有。

单例对象使用static修饰有以下原因:

通过static修饰的属性或者方法是属于类型或者类的,而不是实例对象。这样保证了单例对象在全局范围内只有一个实例,且这个实例在程序的生命周期内不会被动销毁。

懒加载是指变量或方法在第一次使用时才会被加载和初始化。这对于单例模式非常有用,因为它可以延迟对象的初始化,直到真正需要使用该对象时才进行加载,从而节省资源‌。

还有一点原因就是类的构造器已经设置为私有,意味着你不可以在类的外部创建实例对象,如果不用static修饰的话,你的单例对象是无法被访问的。

单例对象使用let而不用var的原因:

使用let声明单例对象时,该对象是不可变的,一旦赋值后就不能再改变。这意味着你不能重新指向一个新的单例对象。这种方式的好处是确保了单例的唯一性,避免了单例被重新赋值的风险。


http://www.kler.cn/a/413032.html

相关文章:

  • 高级 K8s 面试题(Advanced K8S Interview Questions)
  • 如何搭建一个小程序:从零开始的详细指南
  • Android 12.0新增自定义HIDL问题记录
  • v-for产生 You may have an infinite update loop in a component render function
  • 扫振牙刷设计思路以及技术解析
  • 微信小程序 城市点击后跳转 并首页显示被点击城市
  • 【Android】RecyclerView回收复用机制
  • 深入浅出剖析典型文生图产品Midjourney
  • 基于Python的飞机大战复现
  • 把本地新项目初始化传到github
  • Fes.js 项目的目录结构
  • [OpenHarmony5.0][环境][教程]OpenHarmony 5.0源码在WSL2 Ubuntu22.04 编译环境搭建教程
  • SkyWalking没办法自动创建ES索引问题
  • CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes! ABCDE题) 视频讲解
  • d3-contour 生成等高线图
  • 杂7杂8学一点之ZC序列
  • vscode的markdown扩展问题
  • ssm196基于Java框架失物招领信息交互平台的设计与实现+vue(论文+源码)_kaic
  • Galaxy预测比特币期权活跃交易将持续至2027年,特朗普执政中期
  • 使用EFK收集k8s日志
  • CentOS Docker 安装
  • nginx动静分离和rewrite重写和https和keepalived
  • Python学习35天
  • 力扣刷题TOP101:2.BM2 链表内指定区间反转
  • 如何使用MySQL实现多租户架构:设计与实现全解析
  • leecode738.单调递增的数字