MVC框架

来源:互联网 发布:剑网三曹雪阳捏脸数据 编辑:程序博客网 时间:2024/05/16 04:37

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。在iOS开发中MFC机制的应用表现的淋漓尽致。充分理解iOS的MVC模式,更有助于我们开发程序。


模型对象

模型对象封装了应用程序的数据,用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。模型对象更改时(例如通过本地数据库、沙盒或者网络连接接收到新数据),它通知控制器对象更新相应的视图对象。

视图对象

在iOS应用程序开发中,所有控件、窗口等都继承自UIView,即对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件(即用户的操作)都可以通过委托的方式交给UIViewController实现。视图对象的主要目的就是现实来自应用程序模型对象的数据,并使该数据可被编辑。

控制器对象

在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。

控制器对象在响应视图对象中用户进行的操作,会将新的或者更改的数据传递给模型对象模型对象更改时,一个控制器对象会将新的模型数据传达给视图对象,以便视图对象可以显示它。

简单总结一下:

1. Model和View永远不能相互通信,只能通过Controller进行消息传递。

2. Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller进行间接通信。

3. Controller可以直接与View对象对话,通过outlet直接操作View,View通过action向Controller报告事件的发生(如用户点击屏幕)。Controller是View的直接数据源。Controller是View的代理(delegate),以同步View和Controller。

MVC是经典模式,也非常容易理解,但它有两个缺点:

1.View对Model的依赖,会导致View也包含了业务逻辑。

2.Controller容易变得很厚很复杂。

因其缺陷,人们在MVC的基础上又发明了MVP和MVVM:

MVP:Model-View-Presenter,MVC的一个演变模式,将Controller换成了Presenter,主要是为了解决MVC模式的第一个缺点,将View和Model解耦,不过第二个缺点依然没有解决。

MVVM:Model-View-ViewModel,是对MVP的一个优化模式,采用了双向绑定:View的变动,自动反映在ViewModel。

三个架构模式,各有优点,也各有极限性。越高级的模式复杂性越高,实现起来也越难。


参考文献:

1.Concepts in Objective-C Programming(Objective-C 编程中的概念)中的:Model-View-Controller

2.App架构设计经验谈:技术选型    《今日头条》


0 0