结构型: MVC、MVVM
创建型: 单例设计模式、委托协议模式(工厂模式)
行为型: 观察者设计模式··
1.MVC:
Model:最基本的数据读写(转换)
View: 只展示、处理非业务逻辑(动画效果、点击反馈、点击事件的开关保护)
Controller: 网络请求,对Model进行读写操作,并将Model的数据转给View展示,处理View的刷新及页面跳转
缺点:严格来说Model和View应该完全没有直接的联系,但是往往控制器传递给View的数据就是Model类,View的复用前提是传递进去的Model类相同(在理想的情况下,View和Model完全分离,如果视图不依赖某个模型,那么这个视图就可以被复用来展示不同的模型数据)
2.MVVM
View--Controller--ViewModel--Model,控制器将View和ViewModel进行绑定
Model: 最基本的数据读写
ViewModel: 本质也是一个Model,访问Model层的数据,负责处理与页面相关的数据代码(列表、加载更多、搜索、删除、网络、缓存),然后供View层调用
View:只展示、处理非业务逻辑。
3.单例:
整个应用只有该类的一个实例,该实例有一个全局唯一的访问点;采用延迟加载的方式,在第一次用到的时候才去创建单例实例对象;便于管理,不浪费内存。
GCD提供的dispatch_once函数,保证在block里创建单例的语句在整个应用的生命周期里只执行一次,下次再调用时,会返给你之前已经初始化好的实例。
系统的单例有:UIApplication、NSUserDefaults、NSNotification、NSFileManager、NSBundle等(shared、mainBunle、default)。
4.委托模式
代理、类别;类可以实现或不实现协议(接口)中的方法(UITableViewDelegate/UITableViewDataSource);将数据绑定和事件处理交给委托和协议处理,逻辑业务自己完成。
5.观察者模式
一个对象状态改变,通知正在对他进行观察的对象,这些对象根据各自要求做出相应的改变.
通知:addObserver、removeObserver;postNotification,观察者由自己注册
KVO:只能观察对象属性值,观察者的注册是在被观察者的内部进行,观察者和被观察者都需要实现NSKeyValueObserving协议(NSObject默认实现),addObserver、-observeValueForkeyPath回调、removeObserver:forKeyPath移除