MVC模式的原理
说说MVC模式的原理,Android SDK 中有哪些组件使用到了MVC模式,其基本原理是什么?[国内某著名软件外包公司 2010 年面试题]
答案:MVC 的基本原理就是通过Controller 连接View 和Model。也就是说,当View 中显示的数据变化时(如ListView要删除某个列表项),会通知Controller,而不是直接通知Model。这时Controller接到View的通知后,会在Model 中采取相应的动作(如删除数据库中的某条记录)。如果模型的数据发生变化(如插入、删除数据库中的记录),会将变化通知控制器,然后控制器会通知视图重新显示数据。
使用MVC模式可以将显示部分与数据部分分离,这样当更换视图或模型时可以不影响对方,更有利于程序的维护。 在Android SDK中使用MVC模式的组件非常多。例如,所有的列表控制(ListView、Spinner、GridView 等)都采用 MVC 模式与数据交互。在 Android 中 MVC 中的V 就代表这些组件,而M则代表各种数据源以及操作数据库的库。C则代表Adapter 类。Android中的Adapter 类分很多程度,但都拥有共同的接口。这些Adapter 类主要包括BaseAdapter、simpleAdapter、SimpleCursorAdapter、ArrayAdapter、CursorAdapter 等。它们分别对应不同的数据源,例如,ArrayAdapter 对应List 和数组数据源,而 CursorAdapter 对应 Cursor 对象(一般是从数据库中获取的记录集)。这些 Adapter类都需要使用 getView 方法返回当前列表项显示的 View 对象。当 Model 发生改变时,会调用BaseAdapter.notifyDataSetChanged 方法通知组件数据已变化,这时 Adapter 会调用 getView 方法用于重新显示组件中的内容。当组件中显示的数据变化时,如删除一个项表项,组件会通过 Adapter中的方法删除Model 中相应的记录,然后再调用BaseAdapter.notifyDataSetChanged 方法使组件中显示的数据发生变化。总之一句话,无论是数据变化,还是组件中显示的数据发生变化,都需要将Adapter 作为桥来达到View和Model 之间同步的目的
MVC模式的原理的更多相关文章
- 再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
精炼并增补于:界面之下:还原真实的MV*模式 图形界面的应用程序提供给用户可视化的操作界面,这个界面提供给数据和信息.用户输入行为(键盘,鼠标等)会执行一些应用逻辑,应用逻辑(application ...
- JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列
目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...
- MVC模式与三层架构和表示层
1.MVC模式 - Model-View-Controller - 模型-视图-控制器 - Model(模型) > 模型分为业务模型,和数据模型 ...
- iOS中常见的设计模式——单例模式\委托模式\观察者模式\MVC模式
一.单例模式 1. 什么是单例模式? 在iOS应用的生命周期中,某个类只有一个实例. 2. 单例模式解决了什么问题? 想象一下,如果我们要读取文件配置信息,那么每次要读取,我们就要创建一个文件实例,然 ...
- [JavaEE,MVC] Struts工作原理
基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用.和其他的java架构一 ...
- Dot Net设计模式—MVC模式
1 MVC设计模式简介 MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离.MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定 ...
- 浅谈MVC模式
MVC模式(三层架构模式) (Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...
- MVC模式-----struts2框架(2)
MVC模式-----struts2框架 第一个struts2程序 struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExec ...
- Java的MVC模式简介
Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件 ...
随机推荐
- 字符串全部转换为大写用str.toUpperCase()方法
var message="Hello world!"; var x=message.toUpperCase();
- html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
- 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础
1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...
- win7 没有权限使用网络资源
局域网下同一工作组电脑无法访问 提示"....没有权限使用网络资源...." 一.组策略 win + R 输入gpedit.msc并回车,打开本地组策略编辑器 按如下展开 计算机配 ...
- [UE4]认识CanvasPanelSlot,Construct Object From Class动态创建UI控件
Canvas Panel Slot是UserWidget的Canvas Panel组件容器内的组件特有的属性. 只有放置在Canvas Panel容器内才会有Canvas Panel Slot属性 可 ...
- [UE4]捡枪
一.给角色添加碰撞胶囊体并添加On Component Begin Overlap事件 二.检查碰到的东西是不是武器 三.要捡的武器是否已经有主人.检查身上是否有同样类型的枪 五.把枪放到背包数组.关 ...
- css一般性
1. 总差那么几像素!line-height:100%;2. 数据图片,产品图片用img 小图标,logo,修饰网站的图片 用背景3.文字居中 line-height /text-align:cent ...
- PHP微信公众号开发之自动回复
先把源码类发出来 <?php /** 自己封装 微信 开发api */ header('Content-type: text/html; charset=utf-8');#设置头信息 class ...
- javascript(面向对象,作用域,闭包,设计模式等)
javascript(面向对象,作用域,闭包,设计模式等) 1. 常用js类定义的方法有哪些? 参考答案:主要有构造函数原型和对象创建两种方法.原型法是通用老方法,对象创建是ES5推荐使用的方法.目前 ...
- 【Selenium-WebDriver自学】Selenium TestNG(十四)
==================================================================================================== ...