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


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

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

    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()
  • 相关阅读:
    java学习day28-jQuery(常用)
    在博客园上添加bilibili视频
    参数传递 实参
    linux 下office软件推荐
    桥后总结 二
    go基础笔记-包
    Linux:Day24(上)
    Linux:Day23(下) vsftpd
    Linux:Day23(上) MariaDB SQL语句
    Linux:Day22(下) php及mysql使用基础
  • 原文地址:https://www.cnblogs.com/strengthen/p/9803575.html
Copyright © 2020-2023  润新知