oc中的设计模式有
- 首先单例模式:在程序运行过程中初始化,并且单例的初始化只执行一次,其生命周期为单例对象初始化开始到程序结束。其初始化放法有2种如下图
系统中常见的单例有
//沙盒初始化
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//通知初始化
[NSNotificationCenter defaultCenter];
KVC(键值编码 key value coding)其主要作用是将字符串与model对应起来,可以将json字符串转换成model其使用的方法如下图:
如果有一个对象book是另外一个对象person的属性的时候,为book中的一个属性name赋值。
KVO(观察者模式)这个模式是对某一变量进行监听,当事件发生的时候调用对用的时间处理方法,对事件进行处理,在处理结束后需要在dealloc 方法中进行移除。kvo模式下一般分为3步:
- 注册监听器
- 实现监听事件
- 移除监听
对应代码如下:注册监听
事件处理
移除监听
发送通知(NSNotificationCenter)发送通知与KVO模式唯一的不同就是在于(NSNotificationCenter)需要发送通知。其实现流程为:
注册监听
发送消息
处理消息事件
移除监听
委托(代理)模式:该模式与发送消息类似,只是代理一般用于上下2层之间的通信,而通知则不限于附近的2层,其可以跨越多层完成消息的传播完成通信,关键字为:@protocol ,@required 必须实现@optional选择实现
下面是代理的流程:
v1与v2 签订协议
v1
v2
这里的delegate使用leassign修饰,避免循环引用
v1委托V2做代码 ,v2 开始做
v2调用方法处理
v2处理结束 告知v1 已经处理结束
v1得知v2的完成消息后做出相应的处理
还有就是有一个[NSUserDefaults standardUserDefaults] (沙盒)可以储存数据量不是很大的数据,比如可以存放登陆用户的名字密码等等。
最后如果此处有什么模式漏掉了,请各位大牛指出,共同学习,共同进步,谢谢大牛些了。