iOS 设计模式

架构

软件开发的设计方案,比如类与类之间的关系,模块与模块之间的关系、客户端与服务端之间的关系
架构名词:MVC、MVP、MVVM、VIPER、CDD
三层架构、四层架构

apple版本的MVC

tableView的使用就是运用MVC得模式,view并不知道model得存在,model也不知道view的存在,中间用controller来链接两部分。

MVC模式

优点: 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大类:

  1. 创建性模式:
    对象实例化模式:用于解耦对象的实例化过程
  • 单例模式
  • 工厂模式等等
  1. 结构型模式
    把类/对象结合在一起形成一个更大的结构
  • 代理模式
  • 适配器模式
  • 组合模式
  • 装饰模式等等
  1. 行为型模式
    类和对象之间的监护,以及划分责任和算法
  • 观察者模式
  • 命令模式
  • 责任链模式等等

推荐阅读更多精彩内容