iOS 设计模式
架构
软件开发的设计方案,比如类与类之间的关系,模块与模块之间的关系、客户端与服务端之间的关系
架构名词:MVC、MVP、MVVM、VIPER、CDD
三层架构、四层架构
apple版本的MVC
tableView的使用就是运用MVC得模式,view并不知道model得存在,model也不知道view的存在,中间用controller来链接两部分。
优点: view model 都重用度高
缺点:controller的代码容易臃肿,可读性差。
MVC-变种
为了瘦身controller,有一种变种,就是将model跟view绑定,在view中对数据进行绑定,而不是在contrller。
MVC-变种
优点: controller进行了瘦身,将view内部的细节封装起来了。
缺点:view对model依赖。
MVP模式
Model、View、Presenter
MVP
核心就是:创建一个present类,将controller参数传入,在present类中处理controller的相关逻辑(绑定数据,加载view等操作)。来达到未controller瘦身的目的。
MVVM
Model、ViewModel、View-Controller
核心:创建一个View-Model类,将Controller的业务逻辑代码写入该VM类中,同时也可以达到给Contrller瘦身的目的。
MVVM-获取数据
双向绑定
1.Model—->View 这种流向很简单,你请求数据之后,通过Block的回调,最终更新UI
2.View—–>Model 反向绑定也一样,View触发事件,更新对面ViewModel里面绑定的数据源,例如登录注册的Textfield,你输入和删除的时候,你的Model字段会对应更新,当你提交的时候,读取ViewModel的字段,就是已经更新的最新数据。这是一种方式,我个人感觉如下图的另一种更容易理解,比如你选择某个cell或者点赞的时候,View事件触发,更新绑定的ViewModel字段,拥有ViewModel的控制器,用RACObserve来进行该字段开关的读取,如果监听到YES,就刷新对应的页面UI
三层架构
分为:界面层、业务层、数据层
三层架狗
四层架构
四层架构MVC、MVVM、MVP都是属于界面层内部的架构
设计模式
是一套被反复使用,代码设计经验的总结,可重用代码,让代码更加易懂、保证可靠性
设计模式分为3大类:
- 创建性模式:
对象实例化模式:用于解耦对象的实例化过程
- 单例模式
- 工厂模式等等
- 结构型模式
把类/对象结合在一起形成一个更大的结构
- 代理模式
- 适配器模式
- 组合模式
- 装饰模式等等
- 行为型模式
类和对象之间的监护,以及划分责任和算法
- 观察者模式
- 命令模式
- 责任链模式等等