【HeadFirst设计模式】12.复合模式
定义:
复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。
要点:
MVC模式是复合模式,结合了观察者模式、策略模式和组合模式。
模型使用了观察者模式,以便观察者更新,同时保存了解耦。
控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为。
视图使用组合模式实现用户界面,用户界面通常组合了嵌套组件,像面板、框架、按钮。
这些模式携手合作,把MVC模式三层解耦,这样可以保持设计干净又有弹性。
适配器模式用来将新的模式适配成已有的视图和控制器。
Model2是MVC在Web上的应用。
在Model2中,控制器实现成Servlet,而JSP、HTML实现视图。
传统的MVC:
View依赖Controler、Model
Controler依赖View、Model
Model谁也不依赖,而通过观察者模式通知观察者更新状态。
Model2 MVC:
Controler(Servlet)依赖Model,产生包含Model状态的Bean。
View(JSP)接收Controler转换过来的Bean,获得Model的状态,产生新视图。
其它:
在传统的MVC中,View会依赖Model,也会依赖Controler,根据观察
view的内容有两种:
(1)显示Model的状态
这种情况下,View直接依赖于Model获得数据。
(2)产生行为企图改变Model的状态
这种情况下,View直接依赖于Controler发送请求。
Controler会依赖Model和View
(1)一般情况下,Controler依赖Model,发送消息给Model,而后Model由于行为导致的状态改变由Model自己的观察者模式输出。
(2)有时候,Controler给发送消息给Model后,需要对View马上做出改变,这时会依赖View,控制View做出相应调整。
【HeadFirst设计模式】12.复合模式的更多相关文章
- 设计模式学习--复合模式(Compound Pattern)
		设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ... 
- 设计模式之复合模式(Compound Pattern)
		一.什么是复合模式? 在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义: 将多个模式结合起来形成一个“框架”,以解决一般性问题 一提到“框架”,可能最容易联想到的 ... 
- Java 设计模式_复合模式(2016-08-31)
		一.什么是复合模式? 在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义: 将多个模式结合起来形成一个“框架”,以解决一般性问题 一提到“框架”,可能最容易联想到的 ... 
- HeadFirst设计模式之工厂模式
		一. 1."工厂模式"不是种真正的设计模式,而是一种编程术语 2.The Factory Method Pattern defi nes an interface for crea ... 
- HeadFirst设计模式之策略模式
		什么是策略模式:它定义了一系列算法,可以根据不同的实现调用不同的算法 大多数的设计模式都是为了解决系统中变化部分的问题 一.OO基础 抽象.封装.多态.继承 二.OO原则 1.封装变化,如把FlyBe ... 
- 设计模式-12组合模式(Composite Pattern)
		1.模式动机 很多时候会存在"部分-整体"的关系,例如:大学中的部门与学院.总公司中的部门与分公司.学习用品中的书与书包.在软件开发中也是这样,例如,文件系统中的文件与文件夹.窗体 ... 
- [设计模式] 12 代理模式 proxy
		在GOF的<设计模式:可复用面向对象软件的基础>一书中对代理模式是这样说的:为其他对象提供一种代理以控制对这个对象的访问.结合上面的游戏代理的例子和下面的图,我们来进行分析一下.以前你是这 ... 
- HeadFirst设计模式之代理模式
		一. 1.The Proxy Pattern provides a surrogate or placeholder for another object to control access to i ... 
- HeadFirst设计模式之迭代器模式
		一. 1.迭代器模式是对遍历集合元素的抽象 2.The Iterator Pattern provides a way to access the elements of an aggregate o ... 
随机推荐
- cocos2d-x 纹理研究
			转自:http://blog.csdn.net/qq51931373/article/details/9119161 1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要 ... 
- 注入限制绕过<转>
			突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与“'”号和“=”号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以 ... 
- tableview 上拉时 标题行出现在顶部不动效果
			类似这种效果: 其实很简单,利用tableview 的plain属性,然后使用section,其实滑上去不动的是 section的headView. -(NSInteger)numberOfSect ... 
- 使用 jsPlumb 绘制拓扑图 —— 异步载入与绘制的实现
			本文实现的方法能够边异步载入数据边绘制拓扑图. 有若干点须要说明一下: 1. 一次性获取全部数据并绘制拓扑图. 请參见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ... 
- 网络子系统55_ip协议分片重组_加入ipq
			//ip分片加入到正确的ipq结构 //调用路径:ip_defrag->ip_frag_queue // 处理过程: // 1.正在被释放的ipq,不处理新加入的分片(ipq正在被释放由last ... 
- JS字符处理
			JS取整 1.toFixed(num)(ps:num为保留小数点后几位) 自定义保留小数点后几位,进行四舍五入.严格来说,这个函数不属于取整,但是当num=0时,也就是取整了,所以一起放到这里,方便查 ... 
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
			Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ... 
- 几种sap增强的查找方法
			***方法一**************************************** 通过SE30,运行TCODE后,点Evaluate后,查看运行时间分析评估:命中清单. 找以“exit”开 ... 
- android131 360 03  输入密码
			package com.itheima52.mobilesafe.activity; import android.app.Activity; import android.app.AlertDial ... 
- Android ADB启动失败 ADB server out of date
			调试Android程序时总提示ADB未运行,转到命令行方式下启动ADB, adb kille-server停止ADB, 然后再运行adb start-server 随后提示: adb server i ... 
