《Head First 设计模式》总结
2024-10-03 00:59:12
复合模式——模式的模式
MVC(模型-视图-控制器):是由数个设计模式结合起来的模式。
戴着模式的有色眼镜看MVC:
模型利用观察者模式让控制器和视图可以随最新的状态改变而更新。
模型对视图和控制器一无所知,它们之间是完全解耦的,模型只知道有一些观察者它需要通知。模型还提供一些接口,供视图和控制器获得并设置状态。
视图和控制器实现了策略模式。控制器是视图的行为,如果你希望有不同的行为,可以直接换一个控制器。
视图内部使用组合模式来管理窗口、按钮以及其他显示组件。……
MVC与Web
Web开发人员适配MVC,使它符合浏览器/服务器模型。我们称这样的适配为Model 2,并使用Servlet和JSP技术的结合来达到MVC的分离效果。
Model 2
- 发出一个会被Servlet收到的HTTP请求。
- Servlet扮演控制器。
- 控制器将控制权交给视图。
- 模型通过JavaBean获得。
- 视图通过HTTP将页面返回浏览器。
设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 类应该对扩展开放,对修改关闭
- 依赖抽象,不要依赖具体类
- 只和朋友交谈
- 别找我,我会找你
- 类应该只有一个改变的理由
设计模式及其描述
模式 | 描述 |
策略 | 封装可以互换的行为,并使用委托来决定要使用哪一个。 |
观察者 | 让对象能在对象改变时被通知。 |
装饰者 | 包装一个对象,以提供新的行为。 |
工厂方法 | 由子类决定要创建的具体类是哪一个。 |
抽象工厂 | 允许客户创建对象的家族,而无需指定他们的具体类。 |
单件 | 确保有且只有一个对象被创建。 |
命令 | 封装请求成为对象。 |
适配器 | 封装对象,并提供不同的接口。 |
外观 | 简化一群类的接口。 |
模板方法 | 由子类决定如何实现一个算法中的步骤。 |
迭代器 | 在对象的集合之中游走,而不暴露集合的实现。 |
组合 | 客户用一致的方式处理对象集合和单个对象。 |
状态 | 封装了基于状态的行为,并使用委托在行为之间切换。 |
代理 | 包装对象,以控制对此对象的访问。 |
模式分类
创建型:涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。
行为型:涉及到类和对象如何交互及分配职责。
结构型:把类或对象组合到更大的结构中。
剩下的模式
桥接(Bridge)
生成器(Builder):封装一个产品的构造过程,并允许按步骤构造。
责任链(Chain of Responsibility):让一个以上的对象有机会能够处理某个请求的时候。
蝇量(Flyweight):让某个类的一个实例能用来提供许多“虚拟实例”。
解释器(Interpreter)
中介者(Mediator)
备忘录(Memento):让对象返回之前的状态
原型(Prototype):创建给定类的实例的过程很昂贵或很复杂。
访问者(Visitor)
最新文章
- 裸奔单片机GUI
- 4-MSP430定时器_定时器中断
- 利用CAReplicatorLayer实现的加载动画
- 【centOS】账号管理
- 温故而知新--sql存储过程复习
- machine learning----->;学习成绩
- JAVA开发--游戏24点
- (转)Maximum subarray problem--Kadane’s Algorithm
- svn 清空
- iOS开发之录音
- 给你讲个笑话,我是创业公司CEO
- windows 下提取目录下所有文件的文件名
- python的虚拟运行环境
- Jquery+ajax+json+servlet原理和Demo
- 风格一致的backItem在项目中怎样设置
- Java post提交表单限制
- 过滤文件代码 python
- Twisted 安全信道
- haproxy监控页面添加及参数简介(转)
- Zookeeper到底是干嘛的
热门文章
- MySQL之常用命令
- Java项目之项目模板(登录注册)
- Hyperledger Fabric java chaincode 编译部署(1.4V)
- uoj#453. 【集训队作业2018】围绕着我们的圆环(线性代数+递推)
- Linux之NFS网络文件系统
- ios中的奇怪崩溃Signal和EXC_BAD_ACCESS错误分析
- 网络通讯与IP地址
- BZOJ 2725 [Violet 6]故乡的梦 线段树+最短路树
- CF709A Juicer 模拟
- FPGA实战操作(1) -- SDRAM(操作说明)