Model-View-Controller

原文地址:https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html


模型视图控制器(MVC)设计模式在应用程序中为每个对象分配的一种个角色:模型、视图、控制器。该模式不仅定义了对象在应用程序中扮演的角色,它还定义了对象之间的相互通信的方式。三种类型的对象中的每一个都是通过抽象的边界与其他类型的对象分离,并通过这些边界与其他类型的对象进行通信的。在应用程序中,对于MVC中的每一个特定类型的对象集合常常被称为一个层,例如,模型层。

MVC是一个Cocoa应用程序的一个好的设计核心。采用这种模式的好处是很多的。在这些应用程序中的许多对象都有很好的可重用性,他们的接口往往被更好的定义。拥有一个MVC设计模式的应用也容易比其他应用程序具有更好的可扩展性。此外,许多Cocoa的技术和架构都是基于MVC设计模式,并要求你自定义的对象扮演其中一个MVC角色。


模型对象

模型对象封装了特定于应用程序的数据,并定义了操作和处理该数据的逻辑和计算。例如,一个模型对象可能代表一个游戏中的一个字符或一个通讯簿中的联系人。一个模型对象可以与其他模型对象有一对一或者一对多的关系,所以应用程序的模型层常常是一个或多个对象图。大部分数据是应用程序的持久状态的一部分(无论是存储在文件或数据库中)当数据加载到应用程序后应驻留在模型对象中。因为模型对象代表了一个特定的问题域的知识和专业知识,他们可以被重用在类似的问题域。理想情况下,一个模型对象应该和显示和编辑数据的视图层没有直接的联系,它不应该涉及到用户交互和展示的问题。

通信:

视图层中创建和修改数据的用户行为是通过控制器对象来通讯的,并导致模型对象的创建和更新。当一个模型对象发生变化(例如,新的数据通过网络连接被接收),它通知控制器对象更新相应的视图对象。

视图对象

视图对象是应用程序中用户可以看到的一个对象。一个视图对象知道如何绘制自己,并且可以响应用户的行为。视图对象的一个主要目的是显示来自应用程序的模型对象的数据,并使该数据可编辑。尽管如此,视图对象通常在一个MVC应用程序中和模型对象是低耦合的。
因为你通常重用和重新配置,视图对象提供应用程序之间的一致性。无论是UIKit和AppKit框架还是Interface Builder都提供的视图类的集合或对象。

通信:

视图对象通过应用程序的控制器对象来了解模型数据的变化,并通过与控制器对象的通讯来传递用户的交互数据(例如,文本框的输入)到应用程序的模型对象。

控制器对象

控制器就像一个中间人工作在应用程序的一个或者多个视图对象和一个或者多个模型对象之间。因此,控制器对象就像是一个管道,通过它,视图对象了解模型对象的变化,反之亦然。控制器对象也可以执行应用程序的设置和协调任务,并管理其他对象的生命周期。

通信:

一个控制器对象解释视图对象中的用户操作,并将新的或更改的数据通信到模型层。当模型对象改变时,一个控制器对象将新的模型数据与视图对象通信,以便他们能够显示它。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值