设计模式 --- 模型-视图-控制器(Model View Controller)

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已普遍应用于用户交互应用程序中。在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOSMVC模式,有助于咱们程序的组织合理性。
html

model_view_controller
模型对象
模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。例如,模型对象多是表示游戏中的角色或地址簿中的联系人。用户在视图层中所进行的建立或修改数据的操做,经过控制器对象传达出去,最终会建立或更新模型对象。模型对象更改时(例如经过网络链接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。
视图对象
视图对象是应用程序中用户能够看见的对象。视图对象知道如何将本身绘制出来,并可能对用户的操做做出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此,在 MVC 应用程序中,视图对象一般与模型对象分离。
ios

在iOS应用程序开发中,全部的控件、窗口等都继承自 UIView,对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件均可以采用委托的方式,交给UIViewController实现。
控制器对象
在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象所以是同步管道程序,经过它,视图对象了解模型对象的更改,反之亦然。控制器对象还能够为应用程序执行设置和协调任务,并管理其余对象的生命周期。
数据库

控制器对象解释在视图对象中进行的用户操做,并将新的或更改过的数据传达给模型对象。模型对象更改时,一个控制器对象会将新的模型数据传达给视图对象,以便视图对象能够显示它。编程

对于不一样的UIView,有相应的UIViewController,对应MVC中的C。例如在iOS上经常使用的UITableView,它所对应的Controller就是UITableViewController。设计模式

  1. Model和View永远不能相互通讯,只能经过Controller传递。
  2. Controller能够直接与Model对话(读写调用Model),Model经过Notification和KVO机制与Controller间接通讯。
  3. Controller能够直接与View对话,经过outlet,直接操做View,outlet直接对应到View中的控件,View经过action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据极可能是Controller从Model中取得并通过加工了)。Controller是View的代理(delegate),以同步View与Controller。

 

有关“模型-视图-控制器”的完整信息,请参阅 Concepts in Objective-C Programming(Objective-C 编程中的概念)中的:Model-View-Controller服务器

 

MVC模式的优势网络

1.耦合性低  app

视图层与业务层的分离,这样就容许更改视图层代码而不用从新编译模型和控制器代码。一样,一个应用的业务流程或者业务规则的改变只须要改动MVC的模型层便可。由于模型与控制器和视图相分离,因此很容易改变应用程序的数据层和业务规则。模型是自包含的,而且与控制器和视图相分离,因此很容易改变应用程序的数据层和业务规则。若是把数据库从MySQL移植到Oracle,或者改变基于RDBMS数据源到LDAP,只需改变模型便可。一旦正确的实现了模型,无论数据来自数据库或是LDAP服务器,视图将会正确的显示他们。因为运用MVC的应用程序的三个部件是相互独立的,改变其中一个不会影响其余两个,因此依据这种设计思想能构造良好的松耦合的构件。编程语言

2.重用性高ui

3.生命周期成本低

4.部署快

5.可维护性高

6.有利软件工程化管理

转载自:http://liuzhichao.com/p/1379.html

相关文章
相关标签/搜索