有关MVC设计模式 #DF
模型(Model)、视图(View)、控制器(Controller) —— MVC是 Cocoa 中的一种行为模块,并且也是所有 Cocoa 设计模式中使用最多的。在程序中按照它们的角色来分类这些对象并且鼓励你的基础代码也按照这个来划分。
这三种角色是:
模型:这是一种暂时保存你程序数据和定义如何操作它的对象。一个例子,在你的程序中 Album 类就是一个模型。
视图:这种对象是控制模型里的数据如何显示出来的,用户也可操作这些对象;事实上,包含所有的 UIView 和他们的子类。在你的程序中视图是 AlbumView 类。
控制器:控制器是一个中介者协调所有的工作。他使数据从模型传出来然后显示在视图上,监听事件,在必要的时候操作数据。你能猜到哪个类你的控制器吗?对了,它就是 ViewController。
在你的程序中一个好的设计模式的实现意味者所有的对象都在这些群组中。
下图很好的描述了视图和模型之间的通信过程:

当有数据发生改变的时候模型通知控制器,然后控制器更新视图数据。 反过来,当用户在视图执行一些操作后,视图会通知控制器,如果有需要或是要取回请求数据,控制器也会更新模型或者。
你可能想我为什么不能丢掉控制器,在同一个类里实现视图和模型,这样看起来更简单。
归根结底,这是为是分离代码和提高代码的可重用性。理想状态下视图应该完全从模型中分离出来。如果视图不依赖一个特殊的模型来实现,那么另外一个模型就可以重复利用这个视图显示一些其它不同的数据。
举一个例子,在将来某一天你想在你的音乐库中加入一些电影或者一些书,你可以继续使用原来的 AlbumView 视图来显示这个电影或者图书对象。此外,如果你想创建一个新项目,这个项目中的一些东西跟音乐专辑有关,你可以很简单的拿来重用 Album 类,因为它不依赖于其它任何视图。这就是 MVC 的精髓所在。
如何使用 MVC 模式
首先,你要保证在你的项目中任何一个类都有一个控制器,一个模型,一个视图,一个类中的函数不能有两种作用。到目前为至,你已经完成了一项很棒的工作,创建了一个 Album 类和一个 AlbumView 类。
第二步,根据这些方法的作用你应该创建三个文件夹,来存放不同类别的代码,每种类型一个文件夹。
在菜单上选择 File\New\Group (或者按 Command+Option+N) ,创建名称为 Model,重复上面的动作,创建 View 和 Controller 文件夹。
现在拖动 Album.h 和 Album.m 文件到 Model 文件夹。拖动 AlbumView.h 和 AlbumView.m 文件到 View 文件夹,最后拖动 ViewController.h 和 ViewController.m 文件到 Controller 文件夹中。
如果没有其它的文件漂在外面,你的项目看起来已经非常棒了。显然你还可能有其它的文件夹和类,但是你程序的核心内容应该包含在这三个分类中,这样你的文件就已经组织好了。
有关MVC设计模式 #DF的更多相关文章
- AngularJS_01之基础概述、设计原则及MVC设计模式
1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...
- Java Web开发中MVC设计模式简介
一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...
- MVC设计模式与三层架构
三层架构分别是:表示层(Web层).业务逻辑层(BLL层)和数据访问层(DAL层). (1)表示层负责: a.从用户端收集信息 b.将用户信息发送到业务服务层做处理 c.从业务服务层接收处理结果 d. ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- mvc设计模式和mvc框架的区别
Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
- MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)
设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...
- MVC设计模式(持续更新中)
MVC设计模式--->英文全称为: model(模型) View (视图) Controller(控制) MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制 ...
- iOS中MVC设计模式
在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model V ...
随机推荐
- Java开发之项目分包
在我们开始准备写一个大点规模的项目时,我们不能随便地从main函数就开始往下写,要有清晰的逻辑思路和各个层面上的数据的传递和交互. 同时在我们写项目时也应该分出不同的包来做不同的事情,比如view包就 ...
- 【工具】Java转换exe
一.导出jar包 eclipse中对着要转换的项目,右键,导出 搜索jar,选择jar文件,下一步 选择要输出的项目 继续下一步 选择主程序 完成 二.下载及安装exe4j,并转换jar文件为exe文 ...
- supervisor安装与基本使用
supervisor简介 一般的,我们部署一个项目,我们希望它能在挂了之后能自动重启,这时就要用守护进程了,而supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程 ...
- 初识python: 模块定义及调用
一.定义 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件(比如:文件名:test.py,对应的模块名:test) 包:用来从逻辑上组 ...
- 关于 用 js 实现 快照功能
1.前言 前段时间有个需求,想要 打印一个小票凭证 ,实现这个功能,我首先想到了快照, 就是将数据内容排版好,然后截图或者用其他方式将内容 制作成图片 ,然后下载下来打印即可. 2.探讨 为何不直接以 ...
- Linux上天之路(一)之Linux前世今生
0. Linux的前世今生 linux是什么 linux是一个计算机的操作系统,与windows类似,是一款系统软件 操作系统 说到操作系统其实我们首先要思考三个问题: 1)操作系统是什么? 2)操作 ...
- SSM实现支付宝支付
学习支付宝支付 一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse ...
- 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...
- java实现excel表格导入数据库表
导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...
- Windows Server 2008 R2 数据离机备份与恢复操作手册
Windows Server 2008 R2 数据离机备份与恢复操作手册 实验环境 Windows server 2008 R2(服务器) IP地址:192.168.136.175 计算机名:CXH ...