IOS架构模式MVC、MVP、MVVM

1、什么是架构?

       没有明确的定义,属于设计的一方面,没明确的把设计和架构进行区分,它可以小到类与类之间的一个交互,大到不同模块之间,以及不同业务之间的交互,都可以从架构的层面去理解它。

2、MVC架构方式

      Model:模型,存数据。

      View:视图,显示给用户看的界面。

      Controller:控制器,可以直接与model对话,model通过kvo和notification与Controller实现间接通信,拿到model实时数据;又可以直接与view对话,通过outlet直接操作view,view又通过action向controller报告事件的发生,这样controller就可以作为中介,把model拿来的数据显示在view上。

3、MVP架构方式

     Model:与MVC中的model没有太大的区别。主要提供数据的存储功能,一般都是用来封装网络获取的json数据的集合。Presenter通过调用Model进行对象交互。

     View:这里的View与MVC中的V又有一些小差别,这个View可以是viewcontroller、view等控件。Presenter通过向View传model数据进行交互。

      Presenter:作为model和view的中间人,从model层获取数据之后传给view,使得View和model没有耦合。

4、MVVM架构方式

     MVVM跟MVC很相似,将MVC中的view和controller统一为view,并且view仍然不引用model,而且controller也不引用model,而是新增了一个模块叫viewModel,由viewModel来引用model。

      上图就是MVVM的架构图,可以看到viewModel作为view和model的中间协调者。viewModel是一个非常好的地方来处理用户的输入验证逻辑,或者处理model对象中数据的格式化,并将相应的呈现逻辑告诉view,或者发起网络请求,以及其他类型的代码,但是记住一点,viewModel不能够引用view,换句话说,在viewModel中不应该导入UIKit框架进行任何UI相关的操作。一个使用MVVM非常好的方面就是方便进行测试,因为viewModel包含了所有的展示逻辑并且不引用view,所以能够非常容易进行测试,但是使用MVVM模式整体上看你增加一点代码量,但是减少了代码的复杂性,所以是值得使用MVVM模式的。

      3种模式的代码demo可参考github源码。

github源码地址:https://github.com/GengbinZ/MVVM-MVP-MVC/tree/master/MVC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值