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()
  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/strengthen/p/9803575.html
Copyright © 2011-2022 走看看