代理模式:完成委托方的任务,需要声明代理对象和指定代理,相对于block,在需要传递参数的传值时优先考虑代理。
代理是一对一的关系(1个对象只能通知1个对象发生了什么事)。
应用场景:不同类之间的传值与回调。
观察者模式(通知机制,KVO机制):观察者模式本质上是一种发布-订阅模型,用以消除具有不同行为的对象之间的耦合,通过这一模式,不同对象可以协同工作。
通知是一对多的关系(1个通知可以发送给多个通知接受对象)。
应用场景:监听设备状态,自定义键盘时监听键盘的弹出和隐藏。
单例模式:可以保证App在程序运行中,一个类只有唯一个实例。
系统中的单例:UIApplication(应用程序实例)、NSNotificationCenter(消息中心)、NSFileManager(文件管理)、NSUserDefaults(应用程序设置)、NSURLCache(请求缓存)等。
应用场景:功能集中管理的模块可以封装为单例,方便外界调用。
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
MVC(Model View Controller):
model:数据层
view:视图层,负责页面展示
Controller:控制视图层与数据层的关联,
MVVM(model view viewModel):
Model: 数据层,不包含逻辑
View:与用户直接交互,只需处理触发事件后的转发,和告诉他如何显示
ViewModel:跟踪view的事件,处理model层传递的数据;公开方法、属性,让view保持最新的状态