Design Patterns Overview
来源:互联网 发布:免费博客绑定域名 编辑:程序博客网 时间:2024/05/21 17:30
Design Patterns Overview
目录
- Design Patterns Overview
- 目录
- 什么是GoF
- 用途
- 划分依据
- 具体分类1
- Summary
什么是GoF?
提到设计模式,就不得不提到GoF。
1994年,Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides
出版了一本名叫Design Patterns - Elements of Reusable Object-Oriented Software 的书,而这恐怕也是设计模式这个词的起源了。
四位牛哄哄的大侠从此有了响当当的名号——GoF(Gang of Four,四人帮!)
根据四位大神的大作,设计模式基本上基于以下OOD的原则:
- 面向接口编程而不是面向实现编程
- 优先使用组合而不是继承
用途
在软件开发中,设计模式主要用于以下两方面:
开发者之间的交流
设计模式提供了一些通用的术语,并且每种模式都适用于特定的场景。这样开发者交流起来就方便多了。比如一个人说我的代码用了单例模式,那么其他人不用追究细节就知道他是怎么实现的了(我觉得这个是最重要的)。
最佳实践
设计模式已经被证明在软件开发过程中能够为一些问题提供最好的解决方案。并且学习设计模式会让经验不足的开发者简单快速的了解软件设计。
划分依据
参考Design Patterns - Elements of Reusable Object-Oriented Software,设计模式可以分为23种,共3大类。
Creational, Structural and Behavioral patterns。
当然还有其他的分类。
J2EE design patterns
Creational Patterns
划分依据:创建对象
这类模式关注的是对象的创建,并且在创建对象的同时隐藏创建的逻辑,而不是直接使用new操作符。这样对象的创建就更加灵活了,可以根据给定的场景来创建合适的对象。
Structural Patterns
划分依据:类和对象的组合
这类模式关注的是类和对象的组合。通过不同的组合带来更多功能上的变化。
Behavioral Patterns
划分依据:对象之间的交互
这类模式关注的是对象与对象之间的交互(communication)。
J2EE Patterns
划分依据:用于Java EE
具体分类1
Summary
关于设计模式的描述最好还是看英文文档,中文的很多说明都不是很清楚或者说不是很准确,因为中文讲究的是意会,并不是很注重语法和精确性。而设计模式中有些模式之间的差别真的需要仔细甄别才能够体会出来,所以还是建议看英文文档。
- http://www.fluffycat.com/Java-Design-Patterns/ ↩
- Design Patterns Overview
- Design Patterns Overview
- Design Patterns
- Design Patterns
- Design Patterns
- design patterns:
- Design Patterns
- Design Patterns
- Design Patterns
- Design Patterns
- Design Patterns
- Design Patterns
- design patterns
- 3.1. Overview of the Patterns
- Class Design Overview
- Analysis and Design Overview
- NM Restart Design Overview
- ejb design patterns
- 值得推荐的C/C++框架和库
- 获取网络时间
- python sorted
- Linux top命令介绍
- ExpandableListView 单组展开关闭
- Design Patterns Overview
- Magento: Item (Mage_Sales_Model_Order) with the same id “1” already exist
- (自用)利用SQL快速拼接参数列表
- Linux下安装nginx时出现“cp: "conf/koi-win" 与"/usr/local/nginx/conf/koi-win" 为同一文件”的解决方法:
- 利用lua中的string.gsub来巧妙实现json中字段的正则替换
- ImageLoader的使用
- html5 自定义文件上传
- HTTP 消息头
- 硬盘装系统2