IOS中单例模式的设计

    单例模式的意义与设计

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

 

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