美文网首页
单例模式解析

单例模式解析

作者: 英贰与我 | 来源:发表于2015-02-10 23:43 被阅读160次

在软件工程中,单例是一种用于实现单例的数学概念, 既将类的实例化仅限制成一个对象的一种设计模式.或者我们可以简单地将它理解为一个类,只能实例化一个对象的类.在我们IOS工程中,UiApplication 中至少有一个单例模式的存在;

比如: [UIApplication sharedApplication] 这样就可以在工程里调这个单例;

单例模式的作用 :可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源。

单例模式的使用场合:在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次),应该让这个类创建出来的对象永远只有一个。

对于目前单例模式的最佳方式,就是GCD出来以后我们所引用的dispatch_once函数创建的单例;

dispatch_once函数,接收一个dispatch_once用于检查该对象是否已经被调用,它还接收一个希望在应用的生命周期中只能被调用一次的代码块,这就是单例的实例化要的;

dispatch_once函数还有一个好处,就是线程安全问题,使用dispatch_once函数,这就意味着你不用再去给单例加@synchronized,也称给单例加锁;关于线程安全为题,个人理解:给单例对象之所以要加锁,是应为系统对于单例对象的内存申请是在堆区,而不是栈区,而我们在调用的时候一般是在栈区去执行它,也就是说每一个线程都可以调用它,而我们知道堆区的内存是有共享性的,为了保证单例对象的唯一性,避免不会在同一时间被调用,我们给他采用的加锁;

代码演示:

.h中

#import@interface Model : NSObject

//单例

+ (instancetype)sharedHandel;

#import "Model.h"

@implementation Model

.m中方法的实现

+ (instancetype)sharedHandel

{

static Model *model = nil;

static dispatch_once_t OnceToken;

dispatch_once(&OnceToken, ^{

model = [[Model alloc] init];

});

return model;

}

@end

相关文章

  • 枚举单例——避免反序列化破坏单例

    六种单例模式实现 枚举单例 深度解析单例与序列化

  • 设计模式之单例模式

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

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • 设计模式整理(2) 单例模式

    学习《Android 源码设计模式解析与实践》系列笔记 什么是单例 单例模式是应用最广,也是最容易理解的模式之一。...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • 单例模式解析

    单例模式是一种最常见的设计模式。使用场景:确保某个类有且只有一个对象的场景。实现单例模式的几个关键点:1、构造函数...

  • 单例模式解析

    在软件工程中,单例是一种用于实现单例的数学概念, 既将类的实例化仅限制成一个对象的一种设计模式.或者我们可以简单地...

  • 单例模式解析

    单例模式的设计要点 保证只有一个实例私有构造方法,确保其他处的代码无法通过调用该类的构造方法来实例化 保证只有一个...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 单例模式Singleton

    这是我在学习《Android源码设计模式解析和实战》过程中对单例模式作一个记录。方便以后随时翻看。单例模式是应用最...

网友评论

      本文标题:单例模式解析

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