闲话iOS的MVC设计模式

模式是经验知识的复制应用。MVC设计模式在不同的开发平台有不同阐述和应用。目前在网路上可以搜索出java版本、c++版本、c#版本的,也有ios版本的。我这里也发布这篇关于MVC设计模式的文章,用我的缘走你的路。

写在前面的话

若然不用设计模式,难道就不能开发设计程序了吗?不然。那么设计模式给我们带来什么呢?如果你不学习别人总结出来的设计模式,就能轻松、快捷、真正地解决问题,而且还乐意再来一次,我相信你不需要别人的设计模式了。如果??某些问题,让你很挠头,让你不敢再回首,不妨借助别人总结出来的设计模式,来提高一下你的解决方案。

在设计作品中,如果为了使用设计模式而应用设计模式,我认为有点炫技的嫌疑了,大可不必。在iOS APP开发过程中,一般都会涉及到数据处理和UI呈现。如果计算数据的同时还要处理UI的话,会有很多弊端:1. 容易分散精力。2. 不利于复用。3. 重绘画面的时候容易导致重复计算。为了解决这些弊端,我们需要解耦,MVC设计模式就是对症的药。

iOS的MVC设计模式

什么是MVC(Model - View - Controller)设计模式?先看下面的图。

这首先是个分类方面的认识。如,一个程序页面当中有什么东西呢?容易看出来的有数据内容,比如某些文字描述,某些图片内容,还有数据相关的呈现方式,如文字的颜色,背景颜色,图片的大小,位置等。还有别的吗?恐怕一个静态的页面很难勾起这个答案:规则、逻辑、道。这些就是隐藏在程序页面背后的、数据与呈现方式之间的程序逻辑、决策。

程序页面包含:

1. 数据

2. 呈现方式

3. 数据与呈现方式之间的关系。

举个例子,我有四张牌要放到桌面上。要怎样放?呈扇形排布还是呈一行排布,或者成一列排布?四张牌就是数据;扇形排布就是呈现方式;桌面就是我们的程序页面。后面这个“怎样”,就是程序页面背后隐藏的决策逻辑了。

我们可以把这三者叫三个不同的职责。这三个职责可以应用在不同的思维层面上,比如系统架构上,软件架构设计上,程序设计上。只要我们从这三个角度来考虑,就是应用了MVC设计模式了。当然在程序代码层面,iOS的库中在类的命名和职责上都做的很清楚了,如UITableViewController,UITableView,UITableViewCell,NSArray,NSNumber等。我们也可以在设计自己类时,起个好名字,每个类专注且仅专注于其中一个职责。

MVC设计模式就是这样思维模式下的一个产物。包含以下内容:

1. Model <=> 数据

2. View  <=> 呈现方式

3. 控制器(Controller)<=> 数据与呈现方式之间的关系

4. 以上三者的交互关系。什么关系?

    1. Model 不与 View直接通话,如图中Model和View之间的两黄实线。

    2. Model 与 Controller 通话,如图中Model和Controller中两灰色虚实线、当中的绿色箭头、Model上橙色的KVO。

    3. View与 controller 通话,如图中Controller和View之间两灰色虚实线、当中的Outlet绿色箭头、黄色的delegate和data source。

    4. View上action 与 controller 上的target。

    5. Model上KVO发送端与controller上的黄色接受端。

具体步骤:

  设计Model时,先只关注数据所具有的属性。

  设计View时,先只关注任意一个view的呈现方式,不要考虑view中呈现的数据,需要时从controller中可以获取就行了。

  设计Controller时,要关注怎么从Model中获取数据,要关注怎么通知view,以呈现新的数据。与View的通信可以通过用protocol定义消息,view通过delegate来告诉Controller其事件处理过程中的细节,View通过Data Source来询问需要呈现的数据。

例子:我们可以用上面放牌的例子。通过仿照UITableViewController,把每张牌设计类似TableViewCell的类,整个桌面设计成一个类似TableView的类,另外看不到逻辑设计成类似TableViewController的类,每张牌的内容设计成某个继承于NSObject的类,包含有名字、图片等属性。有了这个框架,可以向桌面放任何数目的牌,任何不同的牌,可以按照任一不同的方式排列这些牌。可复用性、可扩展性、低耦合等质量属性就具备了。如要展示一下的页面:

闲话完毕。感谢各位读者,希望能给你带来灵感。

时间: 2024-10-04 22:44:10

闲话iOS的MVC设计模式的相关文章

iOS中MVC设计模式

在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model View Controller)模型(model)-视图(view)-控制器(controller):MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.

iOS-MVC设计模式

MVC的设计模式就本质就时把类的功能进行分类设计,斯坦福大学的老头子在iOS课程中说过,View不关心数据实体,view通过代理通知Controller自己被操作了,让Controller来决定程序的运行,如逻辑跳转或者页面跳转:Model不关心UI,Model负责数据实体的管理如从网络上获取数据实体,一般设计为单例模式,对数据实体的增加删除修改,而这些操作Model通过通知中心通知Controller,Controller通过监听对应的通知来调用对应的操作方法来在主线程更新UI.View和Mo

iOS 的MVC设计模式

MVC是所有面向对象程序设计语言都应该遵守的规范,MVC思想是将一个应用分成三个基本部分:Model(模型).View(视图)和Controller·(控制器),它们以最少的耦合协同工作,从而提高应用的可扩展性和可维护性. 如图: Model组件:在进行ios应用开发时,Model组件通常是一些普通的Objective-C类,这些Object-C类可用于保存少量的应用程序状态数据.当应用程序的数据较多的时候,可以考虑使用Core Data来构建数据模型. (例如我们的学生信息管理系统里面的姓名.

iOS开发与设计模式 - MVC

iOS开发与设计模式 - MVC 最近在学习GoF的设计模式这本书,粗略的浏览了一遍,真是好书.好书就应该好好读,因此很有必要从实际的言语.项目理解设计模式. 我是做iOS开发的,自然就从这方面入手(脑). MVC iOS开发最基本的一个模式就是MVC, M指model,V指view,C指controller,有很多文章对它们是什么,它们的关系,它们如何交互进行了详细的说明,本文就不再展开说明了,仅放一张图供大家参考(来自斯坦福大学ios课程)  ViewController 是什么? 在iOS

iOS开发之理解iOS中的MVC设计模式

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中.在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于我们程序的组织合理性. 模型对象模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示游戏中的角色或地址簿中的联系人.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达

【iOS学习笔记】iOS中的MVC设计模式

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中.在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于我们程序的组织合理性. 模型对象模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示游戏中的角色或地址簿中的联系人.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达

iOS中MVC等设计模式详解

iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计模式是被大家广为熟悉和使用的模式,实际上在移动开发中尤其ios开发中,这种模式被发挥到淋漓尽致 MVC设计模式包括三个部分:模型.视图和控制器. 模型包含数据.信息,逻辑,或对象被认为是部分的业务层的iOS应用. 视图包含所有的用户信息的组件,如文本区域,按钮,滑块,被认为是表示层的一个iOS应用.

iOS 关于MVC和MVVM设计模式的那些事

一.概述 在 iOS 开发中,MVC(Model View Controller)是构建iOS App的标准模式,是苹果推荐的一个用来组织代码的权威范式.Apple甚至是这么说的.在MVC下,所有的对象被归类为一个Model,一个View,和一个Controller.Model持有数据,View显示与用户交互的界面,而ViewController调解Model和View之间的交互.现在,MVC 依然是目前主流客户端编程框架,但同时它也被调侃成Massive View Controller(重量级

ios中的MVC设计模式

一.MVC概念 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范.MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 二.MVC间通信 1.Model和View永远不能相互通信,只能通过Controller传递. 2.Controller可以直接与Model对话(读写调用Model),Model通过Noti