我们在工作中使用文件NSFileManager上课时间,创建发现1对象,此2同样的对象地址:
NSFileManager *file1=[NSFileManager defaultManager]; NSFileManager *file2=[NSFileManager defaultManager]; NSLog(@"%@,%@",file1,file2);
核心是:这个类的defaultManager方法利用的是一种单例模式,即仅仅要这个程序还在执行。那么整个执行期间仅仅能存在1个单例,即1个实例对象。
怎样实现的呢?我们模拟一下。
(1)首先在Person.h中声明一个方法。
#import <Foundation/Foundation.h> @interface Person : NSObject +(Person *)defaultPerson; @end
(2)然后在Person.m中实现(关键)
#import "Person.h" @implementation Person //利用静态变量创建单例模式 //静态变量是仅仅有当整个程序结束执行时才会release释放 static Person * person=nil; //该函数的作用是,当类调用该方法时,始终仅仅返回同一个对象,即仅仅创建1个对象。假设创建其它对象,它们也是相同地址 +(Person *)defaultPerson{ if (person==nil) { person=[[self alloc]init]; } return person; } @end
(3)然后就能够使用了。比方在main.m中
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *p1=[Person defaultPerson]; Person *p2=[Person defaultPerson]; //打印的两个地址是同样的,这就是单例模式的应用 NSLog(@"%@,%@",p1,p2); } return 0; }
除了单例设计模式之外。还有几种设计模式,总结:
——组合模式(聚合模式)。就是一个对象里面包括了另外一个对象。
——单例模式:如上。
——策略模式:用在封装变化点。比方我们定义一个有两个数+1个运算符号的方法,运算符号能够是+、-、*、/。所以这个封装变化点就在运算符号这边。我们能够用一个block方法来实现,这就是一种策略模式。
——向上抽象:就是protocol协议设计模式
——享元设计模式:就是NSString创建一个abc后,再创建一个abc时它会到池子中找到假设有就会直接取出来原本的abc,这相当于NSString原则游泳池。
版权声明:本文博客原创文章。博客,未经同意,不得转载。