美文网首页
2.架构设计(单例模式设计)

2.架构设计(单例模式设计)

作者: 听木子说心语 | 来源:发表于2018-03-18 23:19 被阅读0次

1.设计模式分为三个类

  • 创建型
  • 结构型
  • 行为型

2.创建型:单例模式

  • 为什么用单例模式?
    如果你看到这个问题,你怎么回答呢?
  1. OC编程习惯

  2. 4.2版本之前是MRC(手动分配和释放内存)
    alloc:开辟内存 release:释放内存
    开发者有的时候很容易忽略释放

  3. 4.2之后ARC(自动引用计数)
    我们创建对象的时候,返回重建对象,不去回收,就会造成内存溢出.

  4. 有的时候整个程序中为了避免创建多个对象,引入了单例模式

  • 单例模式(特点)?
    单例模式有哪些特点,此时在你的脑海中是否已经想出了这个问题的答案?是否知道怎么使用,是否能用语言描述.
  1. 有且只有一个实例(全局唯一)
  2. 必须自行创建一个实例
  3. 必须提供一个全局实例,暴露给外部使用
  • 单例模式角色划分
  1. 单例类
  2. 客户端(使用者)
  • 单例模式--如何实现?
    约束:
    1. 约束一: 提供一个静态实例,一般情况下设置为nil.
    2. 约束二: 提供一个函数创建单例,如果单例存在就返回,如果不存在就创建.
    3. 约束三:在OC里面重写父类中的allocWithZone方法,保证是一个单例,当我们在调用alloc的时候回调该方法.
    4. 约束四:OC需要重写父类copyWithzone等,Swift中你要将构建方法私有化,Java也是一样构造方法私有化.

3.实现单例

  • OC-单例模式
    线程安全和非线程安全
    1.标准单例模式01


    Singleton01.h.png
    Singleton01.m.png
  1. allocWithZone方法保证唯一性
  2. 如果没有多线程情况,就可以使用标准模式
  3. 标准单例(非线程安全)
  1. 标准单例模式02


    Singleton02.h.png
    Singleton02.m.png

使用GCD,线程安全下使用.

标准单例模式01和标准单例模式02 是等你需要的时候进行创建
  1. 标准单例模式03

1.标准单例模式03 不管你要不要我都给你
2.load方法(当我们应用程序运行的时候,回调该方法)

Singleton03.h.png
Singleton03.m.png
  1. 标准单例模式04

@synchronized 关键字,同一个时间点,只允许一个来访问,有很多来访问,只需要等待,线程等待,保证了线程的安全.

Singleton04.h.png Singleton04.m.png
  • swift-单例模式
  1. 标准单例模式01

所谓单例模式: 不能够被继承(可选)
在我们的swift中是可以的(final关键字)
非线程安全

加入final关键字.png Test不能继承Singleton01(报错).png
相比OC单例模式,swift是不是更安全一些.
  1. 标准单例模式02

静态属性实例化:线程安全

静态属性实例化.png
  1. 标准单例模式03

结构体实现单例,线程安全

结构体实现单例.png
  • java --单例模式
  1. 标准单例模式01

非线程安全,与swift单例模式很相似

java单例模式--非线程安全.png
  1. 标准单例模式02

使用synchronized关键字,保证线程安全

synchronized--线程安全.png

3.标准单例模式

枚举定义单例

枚举定义单例.png

4.UML单例图

UML单例图.png

客户端类:持有单例对象引用
临时性的引用,处于依赖关系.

5.单例模式-使用场景

1.iOS使用场景
UIApplication,NSNotificationCenter等等
2.实际开发中:工具类(单例,数据库等等)

6.总结

通过对OC,swift,java这些单例模式设计,
是不是对单例有了新的了解.
自己亲自动手一下,单例模式会更加深刻.
代码我稍后整理发到github,大家有需要可以下载.
不过,不建议拿来代码看.
尽量自己敲一遍.
好的,这就是单例模式.
下一节,我们继续进行模式设计.
如果您喜欢这篇文章,请记得点赞哦.

github地址:https://github.com/LK26/Lk_Architect_Singleton

相关文章

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • java单例模式与线程安全

    设计模式在软件架构设计中被经常使用,掌握常用的设计模式对于设计软件系统非常重要。单例模式作为设计模式中最简单和常用...

  • 设计模式之单例模式

    单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...

  • 2.架构设计(单例模式设计)

    1.设计模式分为三个类 创建型 结构型 行为型 2.创建型:单例模式 为什么用单例模式?如果你看到这个问题,你怎么...

  • 设计模式第二篇、单例设计模式

    目录1、什么是单例设计模式2、单例设计模式的简单实现3、单例设计模式面临的两个问题及其完整实现4、单例设计模式的应...

  • 2、创建型设计模式-单例设计模式

    江湖传言里的设计模式-单例设计模式 简介:什么是单例设计模式和应用 备注:面试重点考查 单例设计模式:这个是最简单...

网友评论

      本文标题:2.架构设计(单例模式设计)

      本文链接:https://www.haomeiwen.com/subject/nqgeqftx.html