美文网首页
iOS设计模式——单例模式

iOS设计模式——单例模式

作者: 小书同学 | 来源:发表于2018-09-23 17:48 被阅读0次

一、什么是单例模式?

  单例模式,从字面意思很好理解,就是有且只有一个,也就是在程序中有且只有一个实例,任何时候对其的访问,返回的都是同一个实例。

单例模式的意图就是使得类的一个对象实例成为系统中的唯一实例。

  这就需要一种只允许生成对象唯一实例的机制,阻止所有其他想要生成对象的可能。那么,就可以用静态的类方法来限制实例化的过程,从而达到有且只有一个对象的产生。单例模式,保证一个类有且只有一个实例,并提供一个访问它的全局访问点。

二、单例模式

  下面的图标识了Singleton的静态结构


单例模式.png

  接下来就是在iOS的代码中实现单例模式。

//Singleton.h
@interface Singleton : NSObject {
}
+ (Singleton *) sharedInstance;
- (void) operation;
@end
//Singleton.m
@implementation Singleton

static Singleton *sharedSingleton_ = nil;
- (void) operation{
  // do something
  NSLog(@"Singleton");
}
+ (Singleton *) sharedInstance{
  if (sharedSingleton_ == nil){
    sharedSingleton_ = [NSAllocateObject([self class], 0, NULL) init];
  }
  return sharedSingleton_;
}

+ (id) allocWithZone:(NSZone *)zone{
  return [[self sharedInstance] retain];
}
@end

  单例化的实例,只能通过子类化进行扩展,而且扩展的对象不会破坏原有的代码。

三、线程安全

  由于单例化的实例在程序中有且只有一份实例,所以在使用的过程中,或多或少的会遇到多线程的访问问题。因此,需要在sharedSingleton_静态实例的nil检查周围加入一些@synchronized()程序块或者使用NSLock加锁。如果有其他属性需要保护,也可以把它们声明为atomic类型。

相关文章

  • iOS模式设计之--创建型:1、单例模式

    iOS模式设计之--1、单例模式

  • 单例模式 Singleton Pattern

    单例模式-菜鸟教程 iOS中的设计模式——单例(Singleton) iOS-单例模式写一次就够了 如何正确地写出...

  • 【设计模式】单例模式

    学习文章 iOS设计模式 - 单例 SwiftSingleton 原理图 说明 单例模式人人用过,严格的单例模式很...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • iOS知识梳理3:设计模式

    iOS有哪些常见的设计模式?单例模式/委托模式/观察者模式/MVC模式 单例模式 单例保证了应用程序的生命周期内仅...

  • 单例模式Java篇

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

  • IOS 设计模式

    IOS开发中几种设计模式:单例模式、观察者模式、MVC模式、代理模式 一、单例模式 场景:确保程序运行期某个类,只...

  • 面向对象设计模式-6大原则

    什么是设计模式? iOS内平时有很多设计模式,如:delegate,单例模式,观察者模式,工厂模式…… 设计模式是...

  • 谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以...

  • iOS 单例模式

    关于单例模式的详解,看完这几篇,就完全了然了。iOS 单例模式iOS中的单例模式iOS单例的写法

网友评论

      本文标题:iOS设计模式——单例模式

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