1 前言

数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。因此不管袋子有多大,每次从里面取出弹子的时候,拿到的都是同一个。

2 详述

2.1 简述

面向对象应用程序中的单例类(singleton class)总是返回自己的同一个实例。它提供了对象所提供的资源的全局访问点。与这类设计相关的设计模式称为单例模式。

用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。

这个方法应该是静态方法,因为让类的实例去生成另一个唯一实例毫无意义。

2.2 何时使用单例模式

(1)类只能有一个实例,并且必须从一个为人熟知的访问点对其进行访问,比如工厂方法;

(2)这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码。

2.3 单例的原则

(1)发起调用的对象(calling object)不能以其他分配方式实例化单例对象。否则,就有可能创建单例类的多个实例。

(2)对单例对象实例化的限制应用与引用计数内存模型共存。

2.4 Cocoa Touch中常见的单例模式

UIApplication,UIAccelerometer和NSFileManager类。

3 结语

只要应用程序中需要用集中式的类来协助其服务,这个类就应该生成单一的实例,而不是多个实例。

以上是所有内容,希望对大家有所帮助。

转载于:https://www.cnblogs.com/jiangu66/p/3162894.html

IOS设计模式学习(7)单例相关推荐

  1. 设计模式学习笔记——单例(Singleton)模式

    设计模式学习笔记--单例(Singleton)模式 @(设计模式)[设计模式, 单例模式, Singleton, 懒汉式, 饿汉式] 设计模式学习笔记单例Singleton模式 基本介绍 单例案例 类 ...

  2. 设计模式C#描述——单例与多例模式

    设计模式C#描述--单例与多例模式 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式有以下特点: 单例类只能有一个实例. 单例 ...

  3. iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  4. 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战

    package com.learn.design.pattern.creational.singleton;/*** 这个类是Enum类型* 这个枚举非常简单* 枚举类是Object* 他在多线程的时 ...

  5. 多个if用什么设计模式_抽丝剥茧——单例设计模式

    单例设计模式 兄弟们好,今天是最后一个设计模式了,也是我们最熟悉的单例设计模式,可以说这个设计模式是我们最先接触到的设计模式了.想当年学习JavaSE的时候,老师聊到一个「饿汉式和懒汉式」,我还纠结了 ...

  6. python 与设计模式 ——工厂与单例

    python 与设计模式 源码地址:http://git.oschina.net/duoduo3_69/python_design_pattern git checkout v001(这个版本与此篇博 ...

  7. iOS之深入解析单例的实现和销毁的底层原理

    一.单例的概念 单例设计模式确保对于一个给定的类只有一个实例存在,这个实例有一个全局唯一的访问点.它通常采用懒加载的方式在第一次用到实例的时候再去创建它. 单例可以保证在程序运行过程,一个类只有一个实 ...

  8. java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...

  9. 设计模式之简单单例设计模式

    参考资料:[作者:刘伟  http://blog.csdn.net/lovelion] 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 ...

  10. JS 设计模式 四(单例)

    单例 单例是一个全局变量,使用单例可以更好的控制全局变量,还可以利用分支技术来封装浏览器之间的差异.网页中使用全局变量由于可以被重写风险很大.所以使用单例会更好的控制全局变量. 懒加载 单例模式多数都 ...

最新文章

  1. JDBC连接执行MySQL存储过程报空指针或权限错误
  2. RocketMQ(四):生产者消费者实践
  3. AtCoder AGC031D A Sequence of Permutations (群论、置换快速幂)
  4. Java集合篇:集合类介绍
  5. [转]使用wget命令下载Google drive上的文件
  6. java数据源是什么_《java数据源—连接池》
  7. JEECG 智能开发平台二次开发帮助文档
  8. MySQL服务器变量一
  9. MySql-流程函数
  10. c# 用正则表达式获取开始和结束字符串中间的值
  11. 神威计算机主板型号,十代酷睿高端型Z490主板曝光 总线规格依旧是PCIe 3.0且USB接口并不支持USB 3.2...
  12. 兰州网络教育计算机基础考试,2017年兰州事业单位公共基础备考:计算机基础知识...
  13. ResNet50及其Keras实现
  14. js面向对象练习(二):JS面向对象的思路(canvas)写躁动的小球
  15. Redis设计与实现学习总结
  16. html老师祝福语,教师节给老师的温馨祝福语
  17. Android Gson to Json类型转换异常解决方法
  18. NKOJ 4234 三角分形
  19. flex实现四个元素分布在盒子的四个角
  20. pr_debug打印输出

热门文章

  1. python传递参数*与**
  2. redis技术分享ppt_技术分享丨华为鲲鹏架构Redis知识二三事
  3. Kubernetes 小白学习笔记(2)--基本概念2
  4. 微信小程序云开发教程-WXSS入门-常用样式
  5. 磁盘位置_ORACLE RAC ASM磁盘组迁移到新的ASM磁盘组方法
  6. 2020-06-21
  7. wordpress数据表说明
  8. 聊聊对账系统的设计方案
  9. 解决VMware/virtualbox虚拟机下ghost安装XP后无法从硬盘启动的问题
  10. Android 控件 之 菜单(Menu)