几种单例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/48009105

单例

单例:Singleton pattern。就是只有一个实例,不管实例化多少个对象,对象都是唯一的(可以通过打印其地址证明)。

下面就是一些单例的代码,不是很全,后面接触到新的还会继续补充。

1.普通创建单例的方法:

利用类方法创建单例,首先是类方法的声明(就是普通类方法的声明,不必多说)。

代码:

#import<Foundation/Foundation.h>

@interface StudentManager :NSObject

+(StudentManager *)shareInstance;

@end                                                               

重点是单例的创建,也就是这个类方法的实现。

代码:

#import"StudentManager.h"

staticStudentManager * student;

@implementation StudentManager

+(StudentManager *)shareInstance

{

if (student ==nil) {

student = [[StudentManageralloc] init];

    }

returnstudent;

}

@end

这样单例就创建好了,当我们用这个类方法来创建对象的时候,哪怕是创建再多的对象得到的对象都是唯一的,也就是单例。至于为什么要用单例呢,大家可以上网区查查,有比较全面、详细的解释。一般当系统中希望某个类的对象只有一个的时候,我们一般都会用到单例。

2.利用dispatch创建单例:

也是利用了一个类方法,声明和前面的是一样的,就不在赘述了。

实现代码:

#import"StudentManager.h"

@implementation StudentManager

+(StudentManager *)shareInstance

{

staticStudentManager * studentManager;

staticdispatch_once_t oneToken;

dispatch_once(&oneToken, ^{

studentManager = [[StudentManageralloc] init];

});

return studentManager;

}

@end

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

Flask-SQLAlchemy

一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之...

1.4K90
来自专栏zingpLiu

Python 【web框架】之Flask

flask 是Python实现的轻量级web框架。没有表单,orm等,但扩展性很好。很多Python web开发者十分喜欢。本篇介绍flask的简单使用及其扩展...

15920
来自专栏最高权限比特流

Servlet详细教程

32940
来自专栏技术专栏

慕课网Flask高级编程实战-3.蓝图、模型与CodeFirst

应该讲一些初始化工作,放在对应层级的包的初始化文件 __init__.py 中。比如Flask核心应用app对象初始化应该放在应用层级app包的 __init_...

28630
来自专栏Java进阶

深入理解join方法的实现原理

40890
来自专栏Play & Scala 技术分享

Java基础 - 常用路径操作总结

30470
来自专栏我的博客

TP入门第七天

Trace信息无法显示,因为信息需要显示在body体内 1、创建数据 我们在php的action里面当然也可以使用$_POST以及$_GET获取变量,而TP提供...

29740
来自专栏Python

pymysql模块

一、模块安装 #安装 pip3 install pymysql 二、链接、执行sql、关闭(游标) ? import pymysql user=input('用...

326100
来自专栏喵了个咪的博客空间

phalapi-入门篇5(数据库操作和Model层)

#phalapi-入门篇5(数据库操作和Model层)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源...

43970
来自专栏铭毅天下

Elasticsearch6.X 去重详解

1、题记 Elasticsearch有没有类似mysql的distinct的去重功能呢? 1)如何去重计数? 类似mysql: select distinct(...

55070

扫码关注云+社区

领取腾讯云代金券