架构设计之MVC

时间:2021-12-17 15:27:56

一、简介
  MVC(Model View Controller,模型-视图-控制器)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
  
二、运用MVC

模型层(Model)
  我们针对业务模型,建立的数据结构和相关的类,就可以理解为Model,Model是和业务相关的,和View无关。
  在这层适合做一些业务逻辑处理,例如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。
  
视图层(View)
  应用层中处理数据显示的部分,XML布局可以视为View层,显示Model层的数据结果。
  在这层适合做一些显示效果的处理,例如View的布局显示,view的样式效果等,视图层是直接面向用户的。
  
控制层(controller)
  android的控制层通常在Acitvity、Fragment或者由它们控制的其他业务类中,我们也都知道Activity是Ui主线程。
  在这层我们要处理View层和Model层的交互逻辑。例如从View层获取视图数据,然后向Model发送数据请求。

三、MVC优点和缺点

优点:

1.模块分工明确。主要分层为Model,View,Controller三个模块,有利于代码的阅读和维护。

2.耦合性低。耦合性是指代码模块之间的关联程度。利用MVC框架使得View(视图)层和Model(模型)层可以很好的分离,这样就达到了解耦的目的,所以耦合性低,减少模块代码之间的相互影响。提升了整体代码的可阅读性以及高效的可维护性。

3.扩展性好。由于耦合性低,在新增加需求以及代码时,可以明确需要添加和修改的代码模块。对整体代码架构以及设计有很好的健壮性,降低了bug的出现概率,提高了代码质量。

android和iOS项目使用MVC缺点

  在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户界面,并接受来自用户的操作请求和作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。
  如果大家觉得此弊端不可以接受,推荐大家使用MVP设计模式。