iOS 面试知识集合准备iOS 面试

(一)iOS 常用架构模式MVC和MVVM

2018-11-09  本文已影响5人  神迹之风

面试中常常被问到项目中使用了什么架构模式,这篇文章对常用的两个架构模式做一个整理。


架构模式

架构模式是面向整个项目的,将整个项目拆分为几个不同的模块,这样能有效地管理应用程序,程序员可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
iOS开发中常用到的架构模式有:MVC、MVVM等。


(一)MVC模式

MVC是iOS开发中最基础的架构模式,它将项目拆分为数据模型(M)、UI试图(V)和逻辑控制器(C)这三个模块。

MVC各个模块之间通信的实现方式:

Controller和View之间主要是通过代理协议和block等实现通信;Controller和Model之间主要用到Notification消息通知和KVO等典型观察者模式实现通信;View和Model之间是隔离开的,不可以直接相互通信。

MVC 的优点:
  1. 代码低耦合;
  2. 高重用性和可适用性;
  3. 较低的生命周期成本和高可维护性;
  4. 有利于软件工程化管理。
MVC的缺点
  1. 控制器臃肿;
  2. 视图与控制器之间的连接过于紧密,不利于它们的独立重用;
  3. 缺少专门放网络逻辑代码的部分,网络逻辑代码放在控制器中,加剧了控制器臃肿;

(二)MVVM模式

随着业务规模的不断扩大,业务逻辑也越来越复杂,这样一来Controller控制器中的任务越来越繁重,以至于传统的MVC模式越来越难以满足低耦合、高内聚的设计要求,为了解决这个问题MVVM架构模式诞生了。
MVVM是由微软公司提出的一种新的架构模式,基于MVC架构,特点是在View和Model之间多加了一层ViewModel来实现数据的绑定,从而解决了MVC中Controller过于臃肿的问题。
MVVM帮助MVC模式中的Controller瘦身,将数据加工等一些非业务逻辑从Controller中抽离,让MVVM中的ViewModel负责View和Model之间的通信,并且完成通信间的额外操作,如数据转换、字符拼接等等。ViewModel还可以用来完成复杂的网络请求逻辑,从而更加降低了Controller的复杂度。

MVVM中如何实现数据绑定

MVVM模式的核心是ViewModel,当ViewModel发生变化时需要及时通知View更新,这里就需要将 ViewModel和View进行数据绑定,目前在iOS开发中较常用的两种绑定方式:

  1. 使用KVO,用于轻量级开发中;
  2. 采用RAC (ReactiveCocoa)作为绑定机制。
MVVM所带来的新的问题
  1. 代码量会增加;
  2. MVVM将Model通过ViewModel与View绑定,使得bug很难调试。
  3. 数据绑定需要花费更多的内存。
上一篇下一篇

猜你喜欢

热点阅读