设计模式-01-MVC
概述
- Model-View-Controller(MVC),即模型-视图-控制器。
- MVC将软件系统分成三大部分:Model,View,Controller,三个部分通过某种机制通信
M、V、C的职能
- M(Model)
- 应用程序的核心,用于处理应用程序数据逻辑部分
- V(View)
- 处理应用程序数据的显示
- 通常依据Model创建
- C(Controller)
- 处理用户的交互
- 从视图读取数据,控制用户输入,并向模型发送数据
M、V、C之间的通信
图解(
出自斯坦福大学CS193课程的课件)
- Controller与Model之间的通信
- Controller可以主动向Model发起会话
- Model职能被动地回复Controller发起的会话,不能主动请求Controller
- Controller与View
- Controller可以完全操控View,因为Controller要把View显示在屏幕上
- View可以向Controller发送消息,因为View要将用户的动作传递给Controller
- Model与View之间无法直接通信
- 总结
- Controller对Model:
- 通过API
- C对V:
- Outlet
- V对C:
- Target-action,Delegate,Datasource
- M对C:
- Notification,KVO
- Controller对Model:
V与C之间通信的方式
- 目标操作(target-action)
- Controller内会悬挂一个目标(target),并将一个操作(action)给将要和它交流的视图对象,如图解中的target与action
- 如,为View中的某个按钮添加一个监听事件,当按钮被点击时就执行相应的处理。
- 委托
- 为视图中的某个控件设置代理,当控件被操作时发送相应的代理消息,执行相应的代理方法,实现View与Controller的通信
- 如,tableView的代理
- 数据源
- Controller通过数据源将View需要的数据传递给View,实现Controller与View的通信
设计模式-01-MVC的更多相关文章
- Android 设计模式之MVC模式
说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...
- iOS设计模式(01):观察者
iOS设计模式(01):观察者 iOS-Observer-Pattern 什么是观察者模式 什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的时候,你不用去任何地方,只需要将你的个人地址信息以及订阅信 ...
- python 设计模式之MVC模式
一.简单介绍 mvc模式 the model-view-controller pattern mvc模式是一个运用在软件工程中的设计模式.mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试 ...
- Python设计模式之MVC模式
# -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...
- iOS开发——高级篇——iOS中常见的设计模式(MVC/单例/委托/观察者)
关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...
- 设计模式-14 MVC模式
一 MVC设计模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,它是一个存在于服务器 表达层的模型,它将应用分开,改变应用之间的高度耦合 MVC设计模式将 ...
- 【设计模式】MVC模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...
- mvc设计模式和mvc框架的区别
Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
- iOS常用设计模式:MVC、单例、代理、观察者。
MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller: ...
- 读书笔记-常用设计模式之MVC
1.MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,它最早出现在SmallTalk语言中.MVC模式是一种复合设计模式,由“观察者”(Observ ...
随机推荐
- codeforces C. Bits(数学题+或运算)
题意:给定一个区间,求区间中的一个数,这个数表示成二进制的时候,数字1的个数最多! 如果有多个这样的数字,输出最小的那个! 思路:对左区间的这个数lx的二进制 从右往左将0变成1,直到lx的值大于右区 ...
- Tomcat--配置tomcat,使其除了接受本地访问外,拒绝其他 IP 的访问
解决方案:修改server.xml文件,在</host>前添加代码: <Valve className="org.apache.catalina.valves.Remote ...
- 【Spark】---- 在Linux集群上安装和配置Spark
1 安装JDK 1) 进入JDK官网 2) 下载JDK安装包 3)配置环境变量,在/etc/profile增加以下代码 JAVA_HOME=/home/hadoop/jdk1.6.0_38 PAT ...
- ThroughRain第二次冲刺(每天更新
第二次冲刺时间: 11月28-12月5号 第一次冲刺目标及分配: 1. 查询点餐界面 认领:梁仕标 2. 链接数据库 认领:冯梓凡 3. 建立数据库的表 ...
- 《构建之法》第8、9、10章 读书笔记和Sprint总结
第八章:需求分析 这章主要解析了需求的多面方面,不同的项目需要不同的手段,真正的需求稍纵即逝,需要靠火眼金睛和敏捷的身手来发现并抓住它们.另外,很多时候用户并不知道自己确切的需求,或者不愿意表达完整的 ...
- eclipse中 properties文件编码问题
1. Eclipse修改设置 项目中用到了配置文件,所以在Eclipse中新建.properties文件,文件中编辑了中文,在保存时Eclipse报出以下错误: 解决这个问题的方法: 依次选择: 菜单 ...
- redhat Nginx 安装
1.Nginx 简介 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 ...
- 重构第26天 移除双重否定(Remove Double Negative)
理解:”移除双重否定”是指把代码中的双重否定语句修改成简单的肯定语句,这样即让代码可读,同时也给维护带来了方便. 详解:避免双重否定重构本身非常容易实现,但我们却在太多的代码中见过因为双重否定降低了代 ...
- sencha gridpanel改变单元格颜色
标题列包含 审核通过则绿色,包含拒绝为红色: { xtype: 'gridcolumn', renderer: function(value, metaData, record, rowIndex, ...
- 浅谈ImageList
ImageList组件用了很久,但是一直不太清楚它的实现原理,今天专门特意花了时间倒腾了下,终于弄明白了!于是在这里和大家分享下! 在设计页面中打卡工具箱-组件 找到ImageList组件,将它直接拖 ...