什么是设计模式?
设计模式是对读者经常遇到的设计问题的可再现的解决方案。
设计模式只是编写更好的面向对象程序的一种方法
简单理解就是针对某种问题所设计出来的更好的方法
常用的设计模式有哪些呢?
单例模式,观察者模式,代理模式,工厂模式……
详 情:http://blog.csdn.net/liwei3gjob/article/details/8926862
一、单例模式
什么是单例呢?
单例是生命周期与程序生命周期相同,仅能生成一次、且不能被销毁的唯一实例;
通俗来讲就是一个类始终只有一个实例,不管如果copy还是retain还是alloc等等,都只有一个实例,且这个实例一直存在,不能被销毁。
什么情况下使用单例?
需要确保应用中的一个特定类有且仅有一个实例(对象)
一旦单例存在,单例可在程序任何位置被访问,且一直存在。
比如:我们在做登陆的时候,通常我们会创建一个单例,来看我们这个程序是否登陆的状态,(Bool islogin),因为这个islogin在整个程序都是不断在变的,且唯一,所以我们将其作为一个单例,是非常合适的。
设计单利类的目的,限制这个类只能创建一个对象
单例设计模式的要点:
(1) 某个类只能有一个实例。
(2)他必须自行创建这个对象
(3)必须自行向整个系统提供这个实例;
(4)这个方法必须是一个静态类
单例必须满足以下几个点:
1.只初始化一次
2.全局存在
3.唯一,对象不可改
4.方便获取,任何位置可访问
接下来我们来创建单例。
2.单例的创建步骤
1.首先创建一个UserCenter类
2.在.h文件中:
@interface UserCenter : NSObject
//单例:以default,share,standard,getinstance开头
+ (UserCenter*)standardUserCenter;
//创建返回一个单例实例化对象,只分配一次内存,无法销毁,可以在任何地方使用
//保存的信息
@property (nonatomic, copy) NSString *name;
@end
.m
//声明一个全局单例对象
static UserCenter *instance = nil;//不能让外部访问,同时放在静态块中的
+ (UserCenter *)standardUserCenter {
if (!instance) { //保证第一次创建成功后不再新建对象
instance = [[UserCenter alloc] init];
}
return instance;
}
3.现在我们在main.m中去做实验,
我们还需要一些准备工作,创建一个Student类,在Student.m文件中,导入#import "UserCenter.h",然后重写父类init方法
- (instancetype)init {
self = [super init];
if (self) {
//获取用户信息
NSString *name = [UserCenter standardUserCenter].name;
NSLog(@"%@"