[笔记丶设计模式]1. 设计模式有什么?设计模式简介
来源:互联网 发布:淘宝助理4.6官方下载 编辑:程序博客网 时间:2024/05/26 02:21
转载请注明:来自mrcode markdown博客:http://www.mrcode.cn/zhuqiang/article/details/23.html
- 设计模式的组成
- 设计模式的分类
- 设计模式和面向对象设计原则
- 为何不重点讲述面向对象设计原则
- 设计模式和UML
- 设计模式和设计工具
- 设计模式和重构
1. 设计模式的组成
单个设计模式
在描述一个设计模式的时候,通常会有如下部分:
1. 模式名称:就是为每个设计模式取个名字,好记忆,也好交流
2. 环境和问题:描述在什么场景下,出现什么样的特定的问题
3. 解决方案:描述如何解决这个问题
4. 效果:描述模式的效果,以及可能带来的问题,或则使用中需要权衡的问题
按照设计模式所在的技术领域来划分
1. java设计模式:通常指Gof的《设计模式—可复用面向对象软件的基础》一书中提到的设计模式
2. j2ee设计模式:通常指SUN的《J2EE核心设计模式》一书中提到的设计模式
3. 其他领域的,包括但不限于:EJB设计模式,实时系统设计模式,多线程设计模式、架构模式等等
2.设计模式的分类
仅对gof的23个设计模式进行分为三类
1. 创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例
2. 结构型模式:描述如何组合类和对象以获得更大的结构
3. 行为型模式:描述算法和对象间职责的分配
3.设计模式和面向对象设计原则:
面向对象的分析设计有很多原则,这些原则大都从思想层面,给我们指出了面向对象分析设计的正确方向,是我们进行面向对象分析设计应该尽力遵守的准则。
而设计模式已经是针对某个场景下某些问题的某个解决方案,也就是说这些 设计原则是思想上的指导,而设计模式是实现上的手段
,因此设计模式也是应该遵守这些原则的,换句话说,设计模式就是这些设计原则的一些具体体现
。
4.为何不重点讲述面向对象设计原则:
- 设计原则本身是从思想层面上进行指导,本身是高度概括和原则性的,只是一个设计上的大体方向,其具体实现并不是只有设计模式这一种。理论上来说,可以在相同原则指导下,做出很多不同的实现来。
- 每一种设计模式并不是单一的实现某一个设计原则,事实上,很多设计模式都是熔合了很多个设计原则的思想,并不好特别强调设计模式对某个或则是某些设计原则的体现,而且每个设计模式在应用的时候也会有很多的考量,不同使用场景下,突出体现的设计原则也可能是不一样的。
- 这些设计原则只是一个建议指导,事实上,在实际开发中,很少做到完全遵守,总是在有意无意的违反 或则部分设计原则。设计工作本来就是一个不断权衡的工作,有句话说得很好:“
设计是一种危险的平衡艺术
”,设计原则只是一个指导
,有些时候,还要中和考虑业务功能、实现的难度、系统性能、时间与空间等很多方面的问题 - 设计模式本身已经很复杂了,在一本书里面很难再去深入的探讨这些设计原则,这样避免出现过多的重点内容,导致大家无所适从
5.设计模式和UML
- UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示
- 设计模式和UML本身没有任何联系
- 可以使用UML来图形化表示设计模式的:设计结构、调用顺序等,方便交流
- 完全可以不使用UML,可以使用任何易于交流和表达的方式来表示设计模式的:设计结构、调用顺序等
6.设计模式和设计工具
- 设计模式重在设计、重在思想、重在解决方案,跟使用什么样的设计工具,没有任何关系
- 使用设计工具,能有效的帮助我们去表达应用设计模式设计出来的成果,并对这些成功进行管理和维护
- 完全可以不使用任何设计工具
7.设计模式和重构:
- 设计模式是重构的目标,重构是达到目标的手段(之一)
- 重构并不排斥提前设计,重构并不是不需要设计(
避免过度设计
) - 合理的提前设计(
主要手段
) + 重构来不断的改进设计(辅助手段
) ==》 趋近与优秀的系统
0 0
- [笔记丶设计模式]1. 设计模式有什么?设计模式简介
- 设计模式笔记零:设计模式简介
- 设计模式有什么用
- 什么DAO设计模式
- 设计模式学习笔记:一、设计模式简介
- 设计模式详解-设计模式简介
- 设计模式一:设计模式简介
- java设计模式0--设计模式简介
- 设计模式之设计模式简介
- 设计模式____设计模式简介
- 设计模式(一):设计模式简介
- python设计模式之设计模式简介
- 设计模式简介
- 常见设计模式简介...
- 设计模式简介
- GOF23设计模式简介
- 设计模式简介
- 设计模式简介
- Python3从零学习(六)
- java虚拟机指令集
- Javascript String|Date|Array|Math|Boolean|Number对象方法详解
- Loadrunner错误 -27727: 下载资源时步骤下载超时 (120 seconds) 已过期
- 存储设备
- [笔记丶设计模式]1. 设计模式有什么?设计模式简介
- Android’s HTTP Clients && Android HttpURLConnection
- Hexo在github上构建免费的Web应用
- 电脑关机命令
- Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听
- Ubuntu下GTK的安装、编译和测试
- mybatis 提示The content of elements must consist of well-formed character data or markup
- hdu 5139(离线处理)
- MSComm32控制的使用