欢迎来到天天文库
浏览记录
ID:34436968
大小:10.57 MB
页数:260页
时间:2019-03-06
《design patterns-设计模式_可复用面向对象软件的基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、bbs.theithome.com序言所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于理解,其程度远远超过了未使用模式的体系结构。模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,ChristopherAlexander和他的同事们可能最先将模式语言(patternlanguage)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面向对象软件界。简而言之
2、,软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。在本书中,ErichGamma、RichardHelm、RalphJohnson和JohnVlissides介绍了设计模式的原理,并且对这些设计模式进行了分类描述。因此,该书做出了两个重要的贡献:首先,它展示了模式在建造复杂系统过程中所处的角色;其次,它为如何引用一组精心设计的模式提供了一个实用方法,以帮助实际开发者针对特定应用问题使用适当的模式进行设计。我曾荣幸地有机会与本书的部分作者一同进行体系结构设计工作,从他们身上我学到了许多东西,并相信通过阅读该书你同样也会受益匪浅。Rational软件公
3、司首席科学家GradyBooch前言本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不必迫不及待地翻阅手头的字典。另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和
4、重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。一旦你理解了设计模式并且有了一种“Aha!”(而不是“Huh?”)的应用经验和体验后,你将用一种非同寻常的方式思考面向对象设计。你将拥有一种深刻的洞察力,以帮助你设计出更加灵活的、模块化的、可复用的和
5、易理解的软件—这也是你为何着迷于面向对象技术的源动力,不是吗?当然还有一些提示和鼓励:第一次阅读此书时你可能不会完全理解它,但不必着急,我们在起初编写这本书时也没有完全理解它们!请记住,这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。我们并不认为这组设计模式是完整的和一成不变的,它只是我们目前对设计的思考的记录。因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到:design-patterns@
6、cs.uiuc.edu。你还可以发送邮件“senddesignpatternsource”到design-patterns-source@cs.uiuc.edu获取书中的示例代码部分的源代码。另外我们有一个专门的网页报道最新的消息与更新:http://st-www.cs.uiuc.edu/users/patterns/DPBook/DPBook.html.E.G.于加州MountainViewR.H.于蒙特利尔R.J.于伊利诺UrbanaJ.V.于纽约Hawthorne1994年8月目录序言前言第1章引言11.1什么是设计模式21.2SmalltalkMVC中的设计模
7、式31.3描述设计模式41.4设计模式的编目51.5组织编目71.6设计模式怎样解决设计问题81.6.1寻找合适的对象81.6.2决定对象的粒度91.6.3指定对象接口91.6.4描述对象的实现101.6.5运用复用机制131.6.6关联运行时刻和编译时刻的结构151.6.7设计应支持变化161.7怎样选择设计模式191.8怎样使用设计模式20第2章实例研究:设计一个文档编辑器222.1设计问题232.2文档结构232.2.1递归组合242.2.2图元252.2.3组合模式272.3格式化272.3.1封装格式化算法272.3.2Compositor
此文档下载收益归作者所有