- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式设计连载一
开篇-模式和原则
前言
正式接触使用设计模式近两年了,一直想写点东西来巩固所学,但是迟迟没有动作,总想时间和见识再多一些的时候再动笔,但是拖得越久越感觉合适的时机永远不会有,只有不断实践才能换来进步,也许再不写就永远也写不出来了,于是我终于开始了。
谈到设计模式,应该还没有人能超越GOF的开山之作,所以谈不上什么创新,归根结底还是重复前人的论述和思想,更多的只能是整理和个人的一些心得体会。因为从设计模式诞生以来,业界还是发生了很大的变化的,开发工具和开发过程已经更新换代了很多次,所以很多模式在现在已经不是很常用了,这次计划只重点介绍最流行的模式,以后会逐渐补充其它的模式。(参看下面的提纲)
这个系列计划以《Head First Design Patterns》的结构为主线,也可以说是这本书的学习笔记,但是更多的是学习原书循序渐进的讲解方式,再争取加入更多个人的思想和见解,希望最后能引起大家的共鸣。
园子里已经有好几位大侠和前辈写过设计模式系列的文章了,我从他们那曾经吸收了太多的精华,大恩不言谢,我这里还是谢过了。
提纲
下面是这个系列的提纲初稿,将来会根据实际情况做适当的增删。
开篇-模式和原则
1.?????? 鸭子-策略模式
2.?????? 气象站的故事-观察者模式
3.?????? 来杯咖啡-装饰者模式
4.?????? 美味比萨-工厂模式
5.?????? 巧克力-单件模式
6.?????? 遥控器-命令模式
7.?????? 家庭剧院-适配器和门面模式
8.?????? 好莱坞原则-模板方法模式
9.?????? 餐厅菜单-迭代器和合成模式
10.?? 糖果机-状态模式
11.?? 首席代表-代理模式
12.?? 鸭子重出江湖-复合使用模式
13.?? 用模式思考-与模式相处
14.?? 剩下的模式
设计模式介绍
模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。
这是关于模式最经典的定义,作者是建筑大师Christopher Alexander。如果是第一次看到这句话,多数人会觉得有些抽象难懂。其实“模式”两个字只是一个代号,就像我叫Justin,如果我改叫Tom也没什么问题,只是我更喜欢Justin这个名字,所以从Christopher开始,有了“模式”这个词,人们也都把关于“重复发生的问题的描述和解决办法”统称为模式。
“模式”这个词是不局限于软件开发行业的,它几乎无处不在,它其实就是一种经验的积累,就象大多数人的教育经历都是从小学到初中再到高中再到大学,这也是一种模式,是中国的教育模式;现在越来越火的出国热,也是另一种模式,海外留学模式。因为GOF的《设计模式:可复用面向对象软件的基础》一书描述的23种经典设计模式,奠定了模式在软件行业的地位,从此人们提到“设计模式”就是默指“面向对象设计模式”,但是如前文所述,模式绝对不局限于软件行业,即使在软件行业,也不局限于GOF描述的23种设计模式,例如最著名的Martin Flower的《企业架构模式》,还有我们常用的MVC、IOC等。
[说到这里,有必要声明一下的是,在该系列文章中,凡提到模式,都是指软件行业的基于GOF的《设计模式:可复用面向对象软件的基础》一书的面向对象设计模式,GRASP模式除外。]
因为模式是一种经验的积累和总结,所以通过模式,我们可以站在巨人的肩膀上去思考问题、解决问题,熟练使用设计模式可以提高我们的工作效率,改善产品质量,最终带来经济效益。因此对于任何想开发出灵活高效、健壮的软件产品的个人或团体,熟练掌握并正确使用设计模式都是必须掌握的基本技能。
所以,让我们开始吧……
比设计模式更重要:GRASP (职责分配原则)
要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效、灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈,那么类和对象是从那冒出来的呢?这时就需要比23种设计模式更重要更经典的GRASP模式登场了,嘿嘿,原来这才是老大!
GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”,GRASP一共包括9种模式,它们描述了对象设计和职责分配的基本原则。也就是说,如何把现实世界的业务功能抽象成对象,如何决定一个系统有多少对象,每个对象都包括什么职责,GRASP模式给出了最基本的指导原则。初学者应该尽快掌握、理解这些原则,因为这是如何设计一个面向对象系统的基础。可以说,GRASP是学习使用设计模式的基础。
1.????? Information Expert (信息专家)
信息专家模式是面向对象设计的最基本原则,是我们平时使用最多,应该
文档评论(0)