iOS开发:单例模式

 

这是我的开园第一篇,至于为什么要写单例模式,是因为我在学习ios之初对单例模式的概念比较模糊,特意在这做一次整理,希望可以和大家分享。

一,ios单例模式的概念(什么是单例模式)

 单例模式最主要的一点就是只有一个实例。实例是什么?实例就是对象一个叫法,对象实例化,用前辈的一个比喻就是说:制作月饼的磨具就是类,月饼就是对象,制作月饼的过程叫做对象实例化。

这个类只拥有一个实例,我们称之为单例类。这个单例类需要向整个工程或者说里面的各个类提供它的实例,通俗一点说,小明(实例对象)在一年级四班,他可以被叫到语文办公室,也可以被数学办公室点名。

优点么,实例只有一个,你说呢,,,

 

二,单例模式的应用 

下面是我的一个Demo,非常通俗(单例模式一般情况下如何创建使用)

DAO.h

1 #import <Foundation/Foundation.h>
2 @interface DAO : NSObject
3 + (DAO *)sharedDAO;    //类方法
4 -(void)printYourName; //实例方法,就是过会实例要干的事情
5 @end

 

 

DAO.m

 1 #import "DAO.h"
 2 static DAO *instance=nil;    //静态实例化一个对象 ,为什么是static,因为类方法也叫做静态方法
 3 @implementation DAO
 4 
 5 + (DAO *)sharedDAO           //判断实例是否为空,初始化它,作用就是获得DAO的单例对象
 6 {
 7     if(instance==nil)
 8     {
 9         instance=[[DAO alloc] init];
10     }
11     return instance;
12 }
13
14 -(void)printYourName //实例方法,在BL.m中将会调用
15 {
16 NSLog(@"张三");
17 }
@end

 

 

 

 BL.h

1 #import <Foundation/Foundation.h>
2 #import "DAO.h"
3 
4 @interface BL : NSObject
5 
6 @property (nonatomic,strong) DAO *dao;  //创建一个叫dao的对象
7 
8 @end

 

BL.m

 1 #import "BL.h"
 2 
 3  4 
 5 @implementation BL
 6 - (id)init                         //初始化
 7 {
 8     self=[super init];
 9     if(self)
10     {
11         self.dao=[DAO sharedDAO]; //获得了单例对象
12         
13         [self.dao printYourName]; //用这个单例对象来调用DAO.m中的实例方法
14         
15     }
16     return self;
17 }
18 
19 @end

 

这是较为简单一个demo,手打了一部分,可能会有瑕疵望指正。

对于刚刚学习ios的同学可能会帮助。在MVC开发模式中经常要运用到,当然这个demo比较初级,能够节省内存空间和时间,但存在多线程状态下并发问题,当然网上有很多改进版,大家可以搜索研习。

                                  

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。