码迷,mamicode.com
首页 > 移动开发 > 详细

IOS中单例模式的设计

时间:2014-07-27 21:47:09      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

    单例模式的意义与设计

   单例模式是设计模式中比较常见,而且非常简单的一种设计理念。 当你的应用程序中某个类只有唯一一个实例或对象供外界访问,就可以采用单例模式。例如,消息发送机制中的通知中心,又或者是UI界面中UIWindow,都可以采用单例模式来设计。

   单例模式可以提供唯一的一个对象供其他类来访问,在面向对象的思想中,可以使整个程序看起来更井然有序,而且可以节省内存空间,因为单例一旦被创建,就会一直存在,其他类都将访问这唯一的实例。

 

#import <Foundation.Foundation.h>

@interface SingletonPattern : NSObject 

{

     @public

  NSString *name;  //为单例设计一个属性 ,来测试是否只存在唯一的对象

}

+ (SingletonPattern *)single;

@end

 

#import "SingletonPattern.h"

@implementation SingletonPattern

+ (SingletonPattern *)single

{

  static SingletonPattern *single;  //声明一个单例对象

      if ( !single )       //如果单例对象不存在

      {

    single =[ [SingletonPattern alloc]  init];   //创建一个新的单例对象

      }

  return single;  // 返回创建好的实例

}

@end

下面我们来写另外一个类来访问该对象,测试是否只存在唯一的一个实例

#import <Foundation.Foundation.h>

@interface Test : NSObject

{

}

- (void)test;

@end

 

#import "Test.h"

#import "SingletonPattern.h"  //导入单例头文件

@implementation Test

- (void)test

{

  SingletonPattern *single = [SingletonPattern single ];  //使用单例类方法

  NSLog(@"%@",single -> name);   //访问单例的属性,但不为其赋值

}

#import <Foundation.Foundation.h>

#import "SingletonPattern.h"

#import "Test.h"

int main (int argc, const char * argv[])

{

  @autoreleasepool {

    SingletonPattern *single = [SingletonPattern single ];

            single -> name = @"ABC" ;

 

    Test *test1= [[Test alloc] init ];

           [test1 test ];

  }

       return 0;  

}

运行结果可以看到,输出的并不是NIL ,而是在main 函数中赋予的ABC, 可以得出SingletonPattern类只存在唯一的一个实例对象。

 

IOS中单例模式的设计

标签:

原文地址:http://www.cnblogs.com/HowAndWhy/p/3871125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!