模式-视图-控制器模式2.0

1 MVC的实现 

  1.1 分析应用问题,对系统进行分离 

  分析应用问题,分离出系统的内核功能、对功能的控制输入、系统的输出行为三大部分。设计模型部件使其封装内核数据和计算功能,提供访问显示数据的操作,提供控制内部行为的操作以及其他必要的操作接口。以上形成模型类的数据构成和计算关系。这部分的构成与具体的应用问题紧密相关。 

  1.2 设计和实现每个视图 

  设计每个视图的显示形式,它从模型中获取数据,将它们显示在屏幕上。 

  1.3 设计和实现每个控制器 

  对于每个视图,指定对用户操作的响应时间和行为。在模型状态的影响下,控制器使用特定的方法接受和解释这些事件。控制器的初始化建立起与模型和视图的联系,并且启动事件处理机制。事件处理机制的具体实现方法依赖于界面的工作平台。 

  1.4 使用可安装和卸载的控制器 

  控制器的可安装性和可卸载性,带来了更高的自由度,并且帮助形成高度灵活性的应用。控制器与视图的分离,支持了视图与不同控制器结合的灵活性,以实现不同的操作模式,例如对普通用户、专业用户、或不使用控制器建立的只读视图。这种分离还为在应用中集成新的I/O设备提供了途径。 

2 MVC的变化 

  把模型、视图、控制器实行分离,使设计和使用有了很大灵活性。但是,在现实中,视图和控制器的功能通常是紧密地联系在一起的。控制视图工作的输入事件通常都是与视图的构成相关的。在现实界面设计环境中,界面操作事件及其处理都是与界面形式设计紧密关联的。在这种情况下,把视图和控制器分离开,就给分析和设计带了了不方便,并且运行的效率低。 

  因此,可以把视图和控制器结合起来加以设计和实现。在上面的实现说明中,只要把视图和控制器的类合并生成新的视图类即可。这样,仍然保持着与模型的分离,因此相同的模型仍然可以使用多个视图。这些视图本身已经具备了事件处理能力,仍然可以通过模型对其功能进行控制。 

3 MVC的优点及不足之处 

  3.1 MVC的优点 

  MVC的优点表现在以下几个方面: 

  (1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 

  (2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 

  (3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 

  (4) 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。 

  3.2 MVC的不足之处 

  MVC的不足表现在以下几个方面: 

  (1) 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 

  (2) 视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 

  (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 

  (4) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。 

转载于:https://www.cnblogs.com/6354-aa/p/9100795.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

总体设计的原理

1 模块化 2 抽象 3 逐步求精 4 信息隐藏和局部化 5 模块独立

android 手动回收对象,Android Studio Studio回收列表中的JSON对象

我想在recyclerview中显示一些JSON对象,并且希望它们在日期之后排序,我该如何实现?下面是下载从JSON URL的数据的方法:Android Studio Studio回收列表中的JSON对象public void downloadFromSkistar(){try{URL url new URL("…

剖析管理所有大数据组件的可视化利器:Hue

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 日常的大数据使用都是在服务器命令行中…

Django博客--5.让博客支持 Markdown 语法和代码高亮

文章目录0.前言1.安装 Python Markdown2.在 detail 视图中解析 Markdown3.safe 标签4.代码高亮5.效果展示0.前言 Markdown 是一种 HTML 文本标记语言,只要遵循它约定的语法格式,Markdown 的解析工具就能够把 Markdown 文档转换为标准的 HTML 文档&#…

耦合

模块的独立性很重要,因为有效的模块化(即具有独立的模块)的软件比较容易开发出来。 独立的模块比较容易测试和维护。 模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。 耦合 耦合是对一个软件结构内不同模块之间互连程度的度量。…

成为更优秀的开发人员:第二步-知道你的核心竞争力

编者按:原文作者罗布沃林(Rob Walling)从事Web应用开发10年之久,担任过业内顾问、自由开发人员和全球最大的信用卡预付公司City of Pasadena的开发经理。现居住于加州中部城市弗雷斯诺(Fresno)。关注并指导…

android 字体间间隔,TextView设置行间距、字体间距

一、设置行间距1、设置行间距:android:lineSpacingExtra,取值范围:正数、负数和0,正数表示增加相应的大小,负数表示减少相应的大小,0表示无变化2、设置行间距的倍数:android:lineSpacingMultipl…

破解mysql数据库的密码

发现的1小问题 语句打错以后应该退出本语句,再继续打新语句.也可以打\c,退出本语句. 如何破解数据库的密码: 1:通过任务管理器或者服务管理,关掉mysqld(服务进程) 2:通过命令行特殊参数开启mysqld Mysqld --skip-grant-tables 3:此时,mysqld服务进程已经打开,并且,不需要权限检…

Diango博客--6.Markdown 文章自动生成目录

文章目录0.思路引导1.在文中插入目录2.在页面的任何地方插入目录3.美化标题的锚点 URL0.思路引导 Markdown 在解析内容的同时还可以自动提取整个内容的目录结构,本文内容将从以下几个方面展开: 1)在文中插入目录; 2)在…

Java中对象和引用的理解

2019独角兽企业重金招聘Python工程师标准>>> 偶然想起Java中对象和引用的基本概念,为了加深下对此的理解和认识,特地整理一下相关的知识点,通过具体实例从两者的概念和区别两方面去更形象的认识理解,再去记忆。12一、对…

android怎样封装,如何封装属于自己的博客网站安卓APP 源码家园

说实话我今天在写这个文章的时候是我使用易语言(E4A\易安卓)的第一天,我也是易小白,但是的确可以用!我为什么写这个文章呢?因为之前我也想封装自己的网站,然后去网上找的在线封装生成APP,果然能封装好了&am…

程序员常犯的5个非技术性错误

一个好的软件开发人员需要培养两种技能:技术技能和非技术技能。不幸的是一些开发者只注重技术的部分,以致养成一些陋习,下面是最常犯的5个非技术性错误: 0. 缺乏自律 Jim Rohn曾经说过:自律是目标和成果之间的桥梁。我…

Redis进阶实践之二十 Redis的配置文件使用详解

一、引言   写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多。但是,好多天过去了,总是感觉好像还缺点什么…

web流程设计器 工作流的 整合视频教程 activiti画图 SSM和独立部署

本视频为activiti工作流的web流程设计器整合视频教程整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器)本视频共讲了两种整合方式1. 流程设计器和其它工作流项目分开部署的方式2. 流程设计器和SSM框架项目整合在一起的方式视频大小 1.13 GB ~【…

Diango博客--7.自动生成文章摘要

文章目录0.思路引导1.方法一:覆写 save 方法2.方法二:使用 truncatechars 模板过滤器0.思路引导 博客文章的模型有一个 excerpt 字段,这个字段用于存储文章的摘要。 若在 django admin 后台手动为文章输入摘要,每次手动输入摘要…

android 增加触摸范围,android seekBar 增加点击和滑动范围

seekBar的的范围有限,有时候设计师要求高度为4dp,此时范围太小,很难滑动成功。因此,我们需要在不改变 UI 的前提下,增加点击和滑动范围。直接上代码:public class MainActivity extends AppCompatActivity …

特斯拉股价暴跌,疯狂烧钱是否真的能够带来高额回报?

“疯狂烧钱”并不能成为公司持续亏损的理由,反而可能成为公司升级转型的关键所在。 上周三,特斯拉发布第四季度财报,其后特斯拉CEO马斯克在电话会议上表示,特斯拉亏损收窄,营收同比增长88%,但与此同时其首…

android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网

Gravity版本:Android 4.0 r1结构继承关系public class Gravity extends Objectjava.lang.Objectandroid.view.Gravity类概述用来在一个更大容器中布置对象的标准常量和工具。常量public static final intAXIS_CLIP原始位控制右/底边界是否被剪切到它的容器中&#x…

Diango博客--8.解锁博客侧栏

文章目录0.思路引导1.[最新文章] 模板标签2.[归档] 模板标签3.[分类] 模板标签4.[标签云] 模板标签5.使用自定义的模板标签0.思路引导 博客侧边栏有四项内容:最新文章、归档、分类和标签云,效果展示如下: 这些内容相对比较固定和独立&…