[Stanford] MVC introduction

以下是讲课过程中的笔记,仅为以后复习之便,发现错误现改。

1.什么是MVC?

(1) Model:如飞机激战的游戏中,太空中的飞船,什么机型,每个飞船有多少机枪,多少护甲,这些硬件组成是model。

(2)Controller: 控制model如何在UI上展现给user。Controller的工作是把Model的信息传达给View,响应所有的delegation,因为它能获得Model里的数据, 决定怎么在屏幕上显示,这是它的职能。

(3)View:View是很通用的,是Controller使用的工具,应尽可能的使View阵营里的对象通用化。View不是它显示的数据的所有者,View只是一个平面,用来显示数据,它是一个显示信息的平台。View没有实体变量也不会存储,只有指向他们的指针。View是通用的用来显示的。Controller利用这些通用View来做Model需要做的事情。

View不拥有它所显示的数据,它是如何获得数据的呢?一个类似delegation的方法,它有一些协议,如data at和count,View根据需要去请求数据,非常高效(比如ipad中有10000首歌,但屏幕上只显示7首)。类似地,View会有一个数据源的设置,Controller会回应数据源。注意,数据源的代理delegation永远永远是Controller,或者是Controller指定的第三方,但不可能是Model。

2. MVC的通信方式

(1)Controller用来把Model展现在屏幕上,所以Controller对Model有完全访问权。

(2)Controller可直接与View对话,如:设标志,让View做些东西,在屏幕上排列View,数据通信。Outlet是Controller用来和View通信的属性,所以,我们要在Controller里创建outlets传到View中去。

(3)Model永不和View通信。

(4)View对Controller的通信是不可见的,View不知道在和谁通话(Controller控制如何在屏幕展现Model)

(5)View向Controller通信的方法

a)结构的方法,target action,Controller自己画一个target,然后把一个action交给它的View,当View发生action事件,比如按钮被按,它会把action发到target,然后Controller就知道按钮被按了。View会报给Controller发生了什么,但View对Controller知道的并不多,只是简单地发送target action。

b)delegation是另一个View和Controller通信的方法。View告诉Controller(did、will、should),Controller把自己设为委托,设立一个协议,来回应(will、did、should),View不用知道回应的Controller是哪个类。

(6)广播。Model不能向Controller发话,如果Model里的数据改变了,如何更改controller呢?在iOS里我们实现的方法是用一个广播站,就像信息广播机制,有2个机制:通知(Notification)和关键数据监听(KVO)。KVO也可用于View和Controller但不会是View和Model,View不会有面向Model的广播,View和Controller会互相有广播。

Model广播非常好用,因为是不可见的,但也有限制,只能通知被允许通知的对象发生了什么事。

(7)1个Model只有1个Controller。

Controller可以和其他人的View对话吗?通常Controller会有个指针指向另一个Controller来当做View,它会要求那个Controller来显示东西。所以,当Controller需要显示复杂东西的时候,它需要其他的Controller。

时间: 2024-11-05 13:44:56

[Stanford] MVC introduction的相关文章

基于 Dojo toolkit 实现 web2.0 的 MVC 模式

前言 MVC 模式是设计模式中的经典模式,它可以有效的分离数据层,展示层,和业务逻辑层.Web2.0 技术由于其良好的用户体验被广泛应用于 WEB 应用的展示层.但是在传统的 web 开发中,展示层的和业务逻辑层代码大量耦合,使得应用的可扩展性严重降低,同时页面层代码的可复用性也很低.本文用实例介绍,如何使用 dojo toolkit 扩展 dojo 的页面控件并实现 MVC 模式,有效的分离了展示层与业务逻辑层的代码,同时使得展示层代码可复用性大大提高. 第一部分:Dojo 构造 MVC 与传

[转载]WIKI MVC模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,此

[CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

课程主页:http://cs231n.stanford.edu/ ? Introduction to neural networks -Training Neural Network ______________________________________________________________________________________________________________________________________________________________

计算广告小窥[中]这孙子怎么什么都知道

计算广告小窥[中]这孙子怎么什么都知道 原作:面包包包包包包 修改:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/breada/article/details/50697030 声明:版权所有,转载请联系作者并注明出处 1. 引言 提笔写这篇博客,我的内心是惶恐的.原因很简单,作为一个资历尚浅的研究生,是没有资格对计算广告这样一个伟大的行业.领域和学科来评头论足的.之所以这么做,一是总结自己已掌握的知识,二是降低同学们的学习成本.本人能力有限,

程序员养成指南

坚实的计算机科学基础是成为一名成功软件工程师的重要条件,该指南为那些想进入学术研究和非学术研究领域的学生们提供了编程知识学习路径.你可能会使用该指南来选择课程,但为了能圆满毕业,请保证你对专业课程的学习.该指南中提供的在线资源并不能取代你在大学中的课程... 指南使用须知: 1.请根据自己的具体情况使用该指南. 2.在指南之外,可能仍有很多其他需要学习的内容. 3.学完本指南的内容并不能保证你能获得谷歌的某项工作. 4.该指南会依情况更新或者更改. 你可以在Google +上关注"Google 

谷歌公司发布的程序员养成指南

坚实的计算机科学基础是成为一名成功软件工程师的重要条件,该指南为那些想进入学术研究和非学术研究领域的学生们提供了编程知识学习路径.你可能会使用该指南来选择课程,但为了能圆满毕业,请保证你对专业课程的学习.该指南中提供的在线资源并不能取代你在大学中的课程... 指南使用须知: 1.请根据自己的具体情况使用该指南. 2.在指南之外,可能仍有很多其他需要学习的内容. 3.学完本指南的内容并不能保证你能获得谷歌的某项工作. 4.该指南会依情况更新或者更改. 你可以在Google +上关注"Google

ML学习分享系列(2)_计算广告小窥[中]

原作:面包包包包包包 修改:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 http://blog.csdn.net/han_xiaoyang/article/details/50697074 声明:版权所有,转载请联系作者并注明出处 1. 引言 提笔写这篇博客,我的内心是惶恐的.原因很简单,作为一个资历尚浅的研究生,是没有资格对计算广告这样一个伟大的行业.领域和学科来评头论足的.之

软件工程师的必修和选修(转)

谷歌员工眼中的6个关键点 在我向你提供课程列表前,先读第一二点 全职工作人员——基于你的行业经验和学术背景去选择性的看待这个回答 准大学生——请直接跳到第七点 标记说明: # 可选的 **必须的 #第一点:让我们回到这个问题本身,也即是如何准备才能让自己成为“优秀”的软件工程师? 是的!这个问题的剩余部分都是可选的.加入谷歌不是登月计划.任何优秀的软件工程师都有好机会成为谷歌工作文化的一部分.问题是你如何定义“优秀”. **第二点:调整态度 在你给谷歌招聘人员留下深刻印象之前,让我们来看看谷歌的

转:Google技术开发指南:给大学生自学的建议

原文来自于:http://blog.jobbole.com/80621/ 技术开发指南 想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础.本指南针对大学生,给出一条自学途径,让学生以科班和非科班方式提高技术技能.读者可以学习本指南中介绍的课程,但是为了能正常毕业,还是请侧重于自己本身的专业.本指南中介绍的在线课程无法代替你在大学中的课程.但可以作为其补充,或者作为计算机方面的介绍. 使用说明: 请自行决定如何使用本指南 除了本指南中介绍的内容,如果你有其他想学的,尽情去学吧! 即使学习了