zoukankan      html  css  js  c++  java
  • [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()
  • 相关阅读:
    利用.net Core 对程序集中的类 进行统一依赖注入
    接口中定义异步的方法
    在efcore 中创建类 通过实现IEntityTypeConfiguration<T>接口 实现实体类的伙伴类 实现FluentApi
    在vs2017 版本15.7.6中不支持2.1.0以上版本的net core sdk
    在.net core不同的版本中 webabi引用的包不同
    SQL语句中使用Group by
    DDD实战12 值对象不创建表,而是直接作为实体中的字段
    src与href的区别。
    cookies,sessionStorage 和 localStorage 的区别
    javascript阻止事件冒泡和浏览器的默认行为
  • 原文地址:https://www.cnblogs.com/strengthen/p/9803575.html
Copyright © 2011-2022 走看看