MVC是一种用于表示层设计的复合设计模式

MVC是一种用于表示层设计的复合设计模式。M、V、C分别表示模型(Model)、View(视图)、Controller(控制器)。它们的职责如下:

它们之间的交互有以下几种:
      1.当用户在视图上做任何需要调用模型的操作时,它的请求将被控制器截获。
      2.控制器按照自身指定的策略,将用户行为翻译成模型操作,调用模型相应逻辑实现。
      3.控制器可能会在接到视图操作时,指定视图做某些改变。
      4.当模型的状态发生改变时,将通过某种方式通知视图。
      5.视图可以从模型获取状态,从而改变自己的显示。
我要引入一个设计模式,叫观察着(Observer)模式。

在MVC中,视图是观察者,模型是被观察者,当模型状态改变时,调用所有观察者的Update方法,通知视图模型有变,视图在Update方法里写下响应代码,完成操作。通过这个方法,视图和模型就可以在仅依赖接口的情形下进行交互,而不必强耦合,而且在模型不变的情况下,视图可以随意替换。(只要实现了IObserver)

2. 在MVC中另一个使用接口的地方就是控制器,这里我要首先引入一个设计模式:策略模式(Strategy)。在MVC中,控制器就使用了这个模式。
刚才我说过,视图负责与用户交互,但是,它只负责界面显示部分,至于当用户做了某个操作(如单击某个按钮)后系统应该怎么反应,视图并不负责,它只是将这个动作交给控制器,控制器根据内置的策略,将用户操作翻译成模型的逻辑。这就是说,同一个视图、同一种操作,模型可以做出不同的反应,这取决与控制器的内置策略。所以,我们的系统中可以有很多控制器,它们有不同的策略,当视图希望改变策略时,它可以更换控制器。怎么实现呢?这就需要视图不能和具体控制器耦合,而是要仅依赖一个控制器接口(如IController),并聚合一个IController的实例。当希望更改策略时,可以在系统运行时动态更换Controller,这就是策略模式的实现。

MVC是一种用于表示层设计的复合设计模式

时间: 2024-08-24 06:55:21

MVC是一种用于表示层设计的复合设计模式的相关文章

Struts 2.x仍然明显落后于时代。 Struts 2.x这一类老牌Web MVC开发框架仅能用于开发瘦客户端应用,无法用来开发对于交互体验要求更高的应用。

后来我在工作中陆续使用过Struts 1.x和Struts 2.x.我曾经把一个开源的基于Struts 1.x的自助式广告联盟应用移植到Spring MVC,还基于Struts 2.x做过网站开发.Struts 1.x的主要问题是框架的侵入性太大,不利于代码重用和单元测试.Struts 2.x确实进步很大,完全基于POJO,学习曲线低了很多,还支持零配置(不需要XML配置,甚至也不需要Annotation).尽管如 此,Struts 2.x仍然明显落后于时代.  Struts 2.x这一类老牌W

ASP.NET MVC Filters 4种默认过滤器的使用【附示例】

http://www.cnblogs.com/oppoic/p/mvc_authorization_action_result_exception_filters.html ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地

两种单点登陆设计

单点登陆设计SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方案之一      现在很多企业级应用都基本会去实现单点登陆功能,这样对于用户体验上会有不错的加强.不需要重复登陆多次.好了废话少说,我今天主要介绍两种单点登陆设计. 第一种:最简单的单点登陆设计,如下图: 如图所示:当直接访问各类业务系统时,在页面

两种用于派生的Singleton模式(以TextureMgr为例)

Singleton,顾名思义,从字面上来理解就是单例模式,这是C++程序中 常用到的一种设计模式,特别是像文件管理器,纹理管理器这种整个软件 中只需要唯一的实例来管理所有资源时,这种模式的价值便得以体现. 下面来介绍两种用于派生管理的Singleton模式: 其中,第一种是Gof版本的Singleton, 其代码如下: //[Singleton_Gof.h] #pragma once template<typename T> class Singleton_Gof { protected: s

一种分布式框架设计(一)

通常,当服务涉及到的数据量大到一定程度以后,我们会考虑拆分数据.在这种分布式架构中,每个结点只拥有总数据量的其中一部分,而最终的输出结果会汇总所有结点的结果.这种Map-reduce思想的架构,是尽量不去查分程序,而只是拆分数据来支持大数据的处理,如下图所示.这种框架对每个worker结点的可靠性要求比较高,如果某一个worker结点挂掉了,那么最后的输出结果将是不全的. 我设计的这个分布式框架解决的是另一个问题.比如一个程序中含有A, B, C, D四个逻辑,它们在程序中是串行执行的,彼此之间

一种分布式框架设计(二)

本篇主要介绍分布式框架的模块和其主要使用的通信方式zmq. 首先,对于任意的上游结点,它都有可能会把处理的结果发送到任意的一台下游结点中,同时如果下游结点有新增的结点,上游结点还能自动感知并处理.另一方面,任意的下游结点也会要和所有的上游结点保持心跳.如果使用原始的socket,解决上述的问题会比较麻烦,所以我们运用了zmq来解决上述的问题.Zmq具有下述的优点:1. 是一个跨协议的通信方式,目前支持inproc, ipc, tcp, tpic, multicast:2. 具有丰富且功能强大的设

一种分布式框架设计(三)

本文讨论在分布式框架中使用到的两个数据结构.为了实现高性能,这两个数据结构都是无锁的. 第一个数据结构存储的是客户端发过来的socket.由于我们的框架只有一个线程接受用户的请求,所以很容易对每一个socket创建一个unique number(稍候我们再来看unique number包含了哪些信息).框架中有一个线程专门来做清理工作,同时关闭没有返回给客户端的socket.最后框架中有多个线程去查询所需的socket,由于是根据unique number进行查找,那么它保证了每一个socket

GAEA Pollute v7.13 1CD(经过实践证明的污染物运动分析程序,被广泛用于垃圾填埋设计和环境补救领域)

GAEA产品: GAEA Winfence v2.30 1CD(创建详细,彩色地质截面图的工具) GAEA Winlog v4.50 1CD(创建钻井日志和测井曲线的工具) GAEA Winsieve v1.2 1CD(快速输入和打印结晶粒度分析曲线) ■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□ +  诚信合作,保证质量!!!长期有效:                                                             + 电.话

免费下载:用于原型设计的 iOS 7 线框图

André Revin 使用 Illustrator 创建 iOS7 iPhone 5 的样机原型.这是一个像素完美的线框样机,可以帮助超级轻松的打造你的原型.你可以免费下载源文件,并在工作中使用. 立即下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12款经典的白富美型 jQuery 图片轮播插件 本文链接:免费