《设计模式沉思录(设计模式开山鼻祖xx著作)》图书详细资料信息 ...

内容简介

本书作者是设计模式的开山鼻祖之一。在本书中,他不仅通过一些通俗易懂的实例对如何运用设计模式进行了深入的讲解,而且还介绍了一些新的设计模式。同时还讲述了模式背后鲜为人知的一些故事,让读者领略其中的苦与乐。
本书帮助读者在面向对象设计的基本原则下,将设计模式运用到合适的地方。它道出了虽然不正式、但却严格的标准,展现了紧张的迭代过程,《设计模式》中的23个模式正是基于这样的标准,经历了这样的迭代过程产生的。读者理解了这一点,将有助于把模式应用到讲究实用的日常工作中,认识到必须根据手头的问题来对模式进行调整,并加入自己的思考而不仅仅是盲目地遵循书本教条。通过反复品味,读者有朝一日终能编写出自己的模式! 

作译者

John Vlissides(1961—2005) 设计模式四人帮之一,《设计模式》一书的作者。曾在斯坦福大学工作,自1991年起任IBM T. J. Watson研究中心的研究员。他还曾是《程序设计的模式语言》的编辑,Addison-Wesley“软件模式”丛书的顾问。因患脑瘤于2005年感恩节(11月24日)病故。为纪念他的贡献,ACM SIGPLAN特设立了John Vlissides奖。
葛子昂 现任微软中国研发集团服务器及开发工具事业部的软件开发主管,目前从事WF的相关开发,致力于为WF开发人员提供方便高效的开发工具。之前曾长期从事WCF产品的相关研.. <<

目录

第1章 介绍 1
1.1 对模式的xx误解 3
1.2 观察 9
第2章 运用模式进行设计 11
2.1 基础 12
2.2 孤儿、孤儿的收养以及代用品 16
2.3 “但是应该如何引入代用品呢?” 21
2.4 访问权限 26
2.5 关于VISITOR的一些警告 33
2.6 单用户文件系统的保护 34
2.7 多用户文件系统的保护 41
2.8 小结 52
第3章 主体和变体 55
3.1 终止SINGLETON 55
3.2 OBSERVER的烦恼 65
3.3 重温VISITOR 71
3.4 GENERATION GAP 77
3.5 Type Laundering 92
3.6 感谢内存泄漏 100
3.7 推拉模型 103

前言

我永远不会忘记1994年秋天的那个下午。那天我收到一封来自Stan Lippman(时任C++ Report杂志的主编)的电子邮件,他邀我为该杂志撰写一个专栏,该专栏每两个月一期。
我们算得上是老相识了,早在他参观Watson实验室的时候我们就认识了。那一次我们简单地聊了他在开发工具方面所做的工作,以及GoF在模式方面所做的工作。与那时大多数人不一样的是,Stan熟悉模式的概念——他接连阅读了《设计模式》的一些预印本,并说过一些令人鼓舞的话。尽管如此,我们的谈话很快就转移到了写作上。随着谈话的进行,我记得自己愈加炫耀起来,仿佛我已经不是自己了。而Stan,这位知名的专栏作家,是两本非常成功的图书(还有一本即将出版)的作者,却称自己的写作只是业余水平。我不清楚我们的谈话是否让他感到愉快,还是在他的下一个约会之前他一直都在耐着性子和我谈话。(此后我认识到,如果还有什么能胜过Stan的忍耐力,那就是他的真诚!)
几个月后我收到他的电子邮件,心潮起伏,此前的歉疚感就不值一提了。想象着自己为全球的读者定期撰写专栏,这既让我兴奋,又让我恐惧。写了几次之后我是否还能继续?人们是否在乎我写些什么?我应该写些什么?我写的东西对别人是否有帮助?
我在恐惧中沉溺了将近一小时。然后我想起我父亲的一些告诫:局促不安只能使人无所作为。只要关注最基本的东西,其他东西会随之而来的。“只管去做”(Just do it),他说这句话比耐克要早得多。
于是我就接受了。
选择专栏主题非常容易。那时我深陷于模式的研究中已有三年了。我们最近刚完成《设计模式》,但我们都知道它远远没有说完这个话题。专栏会是一个很好的论坛,可以对《设计模式》一书进行解释,可以对它进行扩展,还可以在新问题出现时展开讨论。如果说专栏有助于《设计模式》图书的销售,那也无妨,只要它立场公正,不乱吹嘘。
现在,我的“模式孵化”专栏已经连载了10多篇文章了,回过头看,我的恐惧是没有依据的。我从来没有因为要找东西写而为难,而且写作时我乐在其中。我还从世界各地收到了大量令人鼓舞的反馈,包括一些人要求阅读过去的专栏,而且这样的要求一再出现。后来我想到了把我的专栏,以及其他一些尚未发表的关于模式的材料,汇编在一起提供给大家。
本书就是要达到这个目的。读者将在书中找到我前三年专栏写作生涯中的思考和想法,其中包括发表在C++ Report和Object Magazine中的所有文章,加上一些零碎的新见解。我按照逻辑的顺序来组织内容,而不是通过时间顺序来组织内容,其目的是为了使所有的内容能够像书本一样连贯。这样的组织比我想象的要容易一些,因为许多文章既是这个系列的一部分,又是那个系列的一部分,当然这仍然需要耗费大量的精力。我衷心地希望读者能够喜欢最终的结果。
致谢
一如既往,我要感谢许多人为我提供各种各样的帮助。首先最重要的是我的GoF成员——Erich Gamma、Richard Helm以及Ralph Johnson。他们每一个人都在不同的时刻为我提供了宝贵的反馈,这些反馈汇集在一起使本书成为了一本更加不同(当然是更好)的图书。我们几人互补性强,如同天成,遇见他们是我三生有幸,我由衷地感谢他们。
然而,同样的帮助也来自其他人。还有许多人花时间研读草稿,为的是找出不合逻辑的论述、不当的言辞,以及大家都再熟悉不过的笔误。他们是Bruce Anderson、Bard Bloom、Frank Buschmann、Jim Coplien、Rey Crisostomo、Wim De Pauw、Kirk Knoernschild、John Lakos、Doug Lea、Bob Martin、Dirk Riehle以及Doug Schmidt。特别感谢Jim,他是我在C++ Report的拍挡,不仅因为他为本书作序,更因为他是如此多才多艺,总是激励我奋进。
接下来要感谢的xx是一些陌生人,他们给我发电子邮件问我问题,提出意见,纠正我的错误,并给我以善意的责备。有许多这样的人,在这里我只列出了本书引用了他们的话的人,或者他们的意见与本书直接相关的人:Mark Betz、Laurion Burchall、Chris Clark、Richard Gyger、Michael Hittesdorf、Michael McCosker、Scott Meyers、Tim Peierls、Paul Pelletier、Ranjiv Sharma、David Van Camp、Gerolf Wendland以及Barbara Zino。虽然很多人我没有提到名字,请相信我同样感谢你们的反馈。
{zh1},我要感谢两个家庭,一个是我自己的家人,另一个是我亲如一家的单位同事,你们对我的支持我无以言表。我欠你们的太多了。
J.V.
vlis@watson.ibm.com
1998年1月于纽约州霍索恩市

序言

John写信告诉我,他打算为C++ Report撰写模式专栏,他的这个决定填补了我生命中的一个空白。具体说来,他一年填补了大概5个空白——那时我正在撰写一个关于模式的专栏,每两个月一期,Stan Lippman建议我和John轮流撰写。John主要关注设计模式,而我在专栏中将继续关注更为广泛的主题。我们俩搭档把模式介绍给C++社区,对此我感到兴奋。不仅如此,我也喜欢John介绍这个主题的方式。我在给他的信中写到:
孵化(hatching)的比喻不仅讨人喜欢,而且很有道理。我刚刚又阅读了Alexander的Notes on Systhesis第2版的前言,显然他认为对那些潜藏在自然中的事物,我们应该去挖掘和发现它们,而不是关注创造它们的“方法”,甚或是从其璀璨的裂缝中窥探它们。
能够与GoF(模式四人帮)之一共同写专栏,我不仅感到高兴,更感到荣幸。如果没有GoF的《设计模式》一书,读者也许都不曾听说过模式。通过对模式的介绍,该书成为了这个全新科目的{jj0}教材。GoF的23个设计模式奠定了一个不大但却非凡的基础,并发展壮大成为我们今天知道的模式社区。而凭借本书读者可以直接深入了解GoF作者之一John的思考过程,同样对更加广阔的过程有一些间接的了解。
为了总结出一个好模式,突破一些局限在所难免,就像小鸡破壳而出,而John的专栏对那些在《设计模式》背后发生的“破壳”的对话进行了探索。例如,John在类结构不断演变的情况下,对VISITOR的限制进行了探索。他还谈论了一些模式,比如GENERATION GAP(见本书的第3章)。这些模式未能被收录到《设计模式》中,但它们可能已经足够好了,值得公之于众。读者会发现GoF关于MULTICAST模式的对话,这段对话让John陷入沉思:“一旦了解了我们在模式开发过程中所经历的混乱,那些认为GoF具备非凡能力的人一定会感到震惊。”本书传达了一个重要的事实,它没有出现在更为学术化和更加完善的《设计模式》一书中:模式源自一群认真努力的程序员,虽然他们不可能每次一开始就把事情都做对,但他们努力地让那些重复出现的设计实践变得实用。我认为阅读本书的模式用户将会感谢GoF为他们的模式而付出的心血,我还认为阅读本书的模式编写者在今后发掘和编写模式时会比以前更加谦逊和勤勉。
乱中求序是自然科学的主旋律,那么,我们不应该认为设计的科学会有任何的不同之处。模式是人们在工作中共同发现一些构成人们高品质生活的因素,并将它们加以记录的整个过程。这不可避免是个有机过程。贯穿本书,读者将得以洞察各模式背后的有机过程,得以了解普通(但非常有经验而且非常尽职的)软件开发人员在努力形成自己对设计的理解时的思考过程。《设计模式》是对他们集体理解的提炼,而本书是对产生理解的过程的提炼,我们不应该低估它在解释GoF模式方面所带来的价值。请允许我引用一封我在1997年晚些时候收到的来自Richard Helm的信,我相信它进一步证实了这一点。
GoF的设计模式只解决了微观架构(micro-architecture)。你仍然必须把宏观架构(macro-architecture)设计好:分层、分布、功能隔离……。而且就像Cope说的,你仍然必须把纳米架构(nano-architecture)设计好:封装、Liskov……。在所有这些中的某个地方,你也许会用到一个模式,也许用不上。即使用上了,也可能和某本书中的介绍和描述很不一样。
这本书将帮助你理解如何将《设计模式》——其实是任何关于设计模式的书籍——当作一本珍贵的指南,而不是当作一些累赘的规定。它可以帮助你在更广阔的面向对象设计的基本原则下,将设计模式运用到合适的地方。它道出了虽然不正式、但却严格的标准和紧张的迭代过程,《设计模式》中的23个模式正是基于这样的标准,经历了这样的迭代过程产生的。知道有这样的过程,以及这样的过程如何发生,让人感到释然,因为它把模式带回到更加讲究实用的日常工作中。我认为这将有助于读者认识到必须根据手头的问题来对模式进行调整,有助于读者加入自己的思考而不仅仅是盲目地遵循“某本书中说过的”教条。我不认为计算机科学家会喜欢这本书,但现实的程序员会反复品味,获得共鸣,并高度欣赏它。
James O. Coplien
朗讯科技公司
贝尔实验室

0人  0% 用户平均打分
0人  0%
0人  0%
0人  0%
0人  0%
郑重声明:资讯 【《设计模式沉思录(设计模式开山鼻祖xx著作)》图书详细资料信息 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——