为什么要了解设计模式呢?
1、单例设计模式
2、MVC模式(model,view,controller)
model用于对数据的处理,比如从数据库里存取数据。例如他可能会用一些构件来处理数据库,被模型返回的数据库是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,模型的代码写一次就可以被多个视图重用,减少了代码的重用性。
View用于对视图的显示,用户能看到的界面
Controller用于把model和view联系起来。通常负责用户交互的部分,从view里读数据,控制用户的输入,把数据传给model,model进行更新,将更新的数据返回给用户,或者反映在视图上
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,比如一批统计数据可以分别用柱状图、饼图来表示,C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。
3、目标行为模式(target- action)
目标行为模式能让代码解耦合,使得代码之间的关联性降低。顾名思义taget是目标,是事件发生后方法执行的对象,action是方法,当某个事件发生之后,taget就执行这个方法。例如:给按钮的点击事件添加target-action那么taget就是按钮,action就是这个点击事件发生之后需要执行的方法。能添加事件的空间都需要继承Control无论是直接继承还是间接继承.
4、观察者模式
-addObserver:selector:name:object: 通过这个方法向通知中心注册通知。
注册监听者,该⽅方法第⼀一个参数为监听者,第⼆二个参数selector参数⽤用于指定监听者的监听⽅方法,第三个参数name指定通知名称,第四个参数object代表发送者对象(poster),如果object参数为nil,则代表⽤用于监听任何对象发出的通知 ,当name为nil时任意通知都能被该观察者监听。
-postNotificationName:object:对象发送通知,任何一个对象都可以发送通知该⽅方法第⼀一个参数指定通知名称,第⼆二个参数指定通知的object ,当object为nil时任何任何观察者都能接受到该通知
-removeObserver:name:object:删除监听者,删除对指定监听者(通过name参数指定)、指定通知的监听
通过NSNotificationCenter可以让应⽤用内不同对象以松耦合的⽅方式进⾏行通信 ,而NSNotificationCenter完全可以代替这种基于delegate的通信机制,这样A对象与B对象可以完全解耦
NSNotification代表Poster(请求者)与observer(监听者)之间的信息载体,该对象包含如下只读属性 :
name:该属性代表该通知的名称。在创建监听者时就是根据该名称进⾏行注册的
object:该属性代表该通知传递的对象
userInfo:该属性是⼀一个NSDictionary,⽤用于携带通知的附加信息
通知可以用于在两个对象之间进行传值。
系统自带的通知:
当应⽤用程序状态改变时,UIApplication会对外发送NSNotification
当键盘出现时,UIWindow会对外发送NSNotification
可以在苹果的帮助文档中找到各种系统的通知:
KVO(Key Value Observing)
kvo模式指当指定的对象的属性被修改后则对象就会接收到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会⾃自动通知相应的观察者。
addObserver:forKeyPath:options:context:
observeValueForKeyPath:ofObject:change:context:当被监听的key路径对应的属性值发⽣生改变时,就会回调监听器⾃自⾝身的⽅方法(该⽅方法)
removeObserver:forKeyPath:为key路径删除指定的监听器
5、代理模
通俗地来讲,当某一个对象不能确定把数据传给某一对象时或者当某一对对象持有数据,不能自己执行某些操作,需要代理代替它执行,那么这个时候就要用到代理。代理需要遵守协议,执行里面的方法。也可以通过代理来传值。
协议的声明:
1、声明协议
2、声明一个testDelegate属性,通过这个属性调用协议中的方法。
3、代理遵守这个协议,实现协议里面的方法。