《Head First设计模式》 读书笔记13 复合模式 MVC模式
2013-05-10 10:50
447 查看
《Head First设计模式》 读书笔记13 复合模式 MVC模式
[b]复合模式(Compound Pattern)[/b]结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。问题与解决方案
有一群会叫的鸭子。想要在使用鸭子的地方使用鹅——适配器模式。
统计呱呱叫的次数——装饰者。
控制生产各种不同类型的鸭子——抽象工厂模式。
作为一个整体来管理鸭子——组合模式、迭代器模式。
观察个别鸭子的行为——观察者模式。
MVC复合模式
[b]Model-View-Controller :模型-视图-控制器[/b],复合模式。MVC是由数个设计模式结合起来的模式。
例子:MP3播放器。
![](http://images.cnitblog.com/blog/325852/201305/10105123-6bebe86674c1402eaabde10c054cfb63.png)
M,Model模型:
模型持有所有的数据、状态和程序逻辑。
模型没有注意到视图和控制器,虽然它提供了操纵和检索状态的接口,并发送状态改变通知给观察者。
V,View 视图:
视图用来呈现模型。
视图通常直接从模型中取得它需要显示的状态与数据。
[b]C,Controller [/b]控制器:
控制器取得用户的输入并解读其对模型的意思。
控制器把控制逻辑从视图中分离,让模型和视图之间解耦。通过保持控制器和视图之间的松耦合,设计就更有弹性而且容易扩展。
![](http://images.cnitblog.com/blog/325852/201305/10105150-810a3df959d94a19bb3e6042e01b12ee.png)
MVC中的设计模式
模型利用观察者模式让控制器和视图可以随最新的状态改变而更新。模型对视图和控制器一无所知,它们之间是完全解耦的,模型只知道有一些观察者它需要通知。模型还提供一些接口,供视图和控制器获得并设置状态。
视图和控制器实现了策略模式。控制器是视图的行为,如果你希望有不同的行为,可以直接换一个控制器。
视图内部使用组合模式来管理窗口、按钮以及其他显示组件。
实例
利用MVC控制节拍。如果需要更换另一个相似的模型(比如把节拍模型更换成心跳模型),使用适配器模式将模型适配成符合现有视图和控制器的模型。
MVC与Web
Web开发人员适配MVC,使它符合浏览器/服务器模型。我们称这样的适配为Model 2。![](http://images.cnitblog.com/blog/325852/201305/10105215-5773adbaaef84312ac410715ea1e6220.png)
Model 2:你的手机也可用DJ程序
要把原来Web版的改为手机Web版:模型不需要修正;
创建Servlet控制器。我们需要一个简单的Servlet,可以接收HTTP请求,并对模型进行一些操作。
创建HTML视图。我们用JSP创建一个简单的视图。它会从控制器中收到一个JavaBean,从这个Bean就可以得知它所有需要显示的东西。然后JSP将产生一个HTML界面。
相关文章推荐
- 【Head First设计模式-读书笔记】策略模式
- 复合模式-《Head First设计模式》笔记终篇
- 读书笔记13:状态模式
- MVC模式 - 一种复合模式
- 《Head First设计模式》 读书笔记15 其余的模式(一) 桥接 生成器 责任链
- 《Head First设计模式》 读书笔记01 策略模式
- 《Head First设计模式》 读书笔记02 观察者模式 Observer
- 《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者
- 【Head First设计模式-读书笔记】观察者模式
- 读书笔记2:Head First设计模式——观察者模式
- 《Head First设计模式》 读书笔记08 适配器模式与外观模式 The Adapter and Façade Patterns
- 《Android源码设计模式》读书笔记 (13) 第13章 备忘录模式
- 《Head First设计模式》 读书笔记06 单件模式 Singleton Pattern
- 《Head First设计模式》 读书笔记05 工厂模式(二)
- Head First设计模式学习笔记-------(14)复合模式
- 《Head First设计模式》 读书笔记14 真实世界中的模式
- 《Head First设计模式》 读书笔记17 其余的模式(三) 备忘录 原型 访问者
- 《Head First设计模式》 读书笔记11 状态模式 The State Pattern
- 《Head First设计模式》 读书笔记12 代理模式 The Proxy Pattern
- Head First设计模式 读书笔记01 策略模式(Ruby代码实现)