程序设计的模式语言(卷2)
基本信息
内容简介回到顶部↑
“具备一种专门技能是一种能力,而将其应用到其他方面则是另一种能力。了解模式就会具备这些能力。.
本书由john m.vlissides、vlissides,james o.coplien和norman l.kerth编著。
模式是根植于编程文化,根植于一种在当前体系结构下相同名义的设计迁移行为,以及根植于任意文化中永恒的共同部分实践的一种文化形式。 本卷是面向专业软件开发者模式系列的第二本书籍。其中介绍的模式可以用于解决在软件设计和开发中经常会遇到的许多问题,包括了面向语言的模式和惯例、通用和专用目的的模式。体系结构模式、处理或者组织模式。解释型模式;以及面向并行编程、分布式系统和反应性系统的模式。本卷中收集的新模式不仅揭示了高级软件开发的秘密,也使得这些秘密易于应用到读者实际的工作中。..
john m.vlissides是位于纽约霍索恩的ibm t.j.watson研究中心的一位研究人员。他作为设计者、实现者、研究者、演讲者以及咨询顾问在面向对象技术领域已经有超过十年的从业经验了。他是design patternts:elements of reusable object-oriented software一书的合作者(addison—wesley,1995年)。james o.coplien是位于伊利诺伊州内珀维尔的贝尔实验室软件生产研究部的一名成员。他的研究兴趣集中在针对软件开发处理的多范例开发方法和组织人类学上,他是advanced c++:programming styles and ldioma (addison-wesley,1995年)一书的作者。norman l.kerth是俄勒冈州波特兰的elite systems的主要咨询顾问,他为许多公司提供服务以确保它们成功转向面向对象技术,他的业务范围包括规范和设计行为、质量保证、增强式持续处理、项目管理以及构建有效的团队等诸多领域。...
本书由john m.vlissides、vlissides,james o.coplien和norman l.kerth编著。
模式是根植于编程文化,根植于一种在当前体系结构下相同名义的设计迁移行为,以及根植于任意文化中永恒的共同部分实践的一种文化形式。 本卷是面向专业软件开发者模式系列的第二本书籍。其中介绍的模式可以用于解决在软件设计和开发中经常会遇到的许多问题,包括了面向语言的模式和惯例、通用和专用目的的模式。体系结构模式、处理或者组织模式。解释型模式;以及面向并行编程、分布式系统和反应性系统的模式。本卷中收集的新模式不仅揭示了高级软件开发的秘密,也使得这些秘密易于应用到读者实际的工作中。..
john m.vlissides是位于纽约霍索恩的ibm t.j.watson研究中心的一位研究人员。他作为设计者、实现者、研究者、演讲者以及咨询顾问在面向对象技术领域已经有超过十年的从业经验了。他是design patternts:elements of reusable object-oriented software一书的合作者(addison—wesley,1995年)。james o.coplien是位于伊利诺伊州内珀维尔的贝尔实验室软件生产研究部的一名成员。他的研究兴趣集中在针对软件开发处理的多范例开发方法和组织人类学上,他是advanced c++:programming styles and ldioma (addison-wesley,1995年)一书的作者。norman l.kerth是俄勒冈州波特兰的elite systems的主要咨询顾问,他为许多公司提供服务以确保它们成功转向面向对象技术,他的业务范围包括规范和设计行为、质量保证、增强式持续处理、项目管理以及构建有效的团队等诸多领域。...
作译者回到顶部↑
本书提供作译者介绍
John M.Vissides是位于纽约霍索恩的IBM T.J.Watson研究中心的一位研究人员。作他为设计者、实现者、研究者、演讲者以及咨询顾问在面向对技术领域已经有超过十年的从业经验了。他是Design patterns :Element of Reusable Object-Oriented Software一书的合作者(Addison-Wesley,1995年)。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第1部分特定语言的模式与惯用法.
第1章局部所有权: 管理c++中的动态对象
1.1摘要
1.2介绍
1.3术语
1.4综述
1.4.1局部所有权
1.4.2动态对象之外的资源
1.5模式1: 创建者是惟一所有者
1.6模式1.1: 函数是惟一所有者
1.7模式1.2: 对象是惟一所有者
1.8模式1.3: 类作为惟一所有者
1.9模式2: 所有者序列
1.10模式3: 共享所有权
1.11相关主题
1.12致谢
1.13参考文献第2章延迟优化: 高效smalltalk编程模式
2.1性能评估
2.2延迟优化
2.3性能标准
第1章局部所有权: 管理c++中的动态对象
1.1摘要
1.2介绍
1.3术语
1.4综述
1.4.1局部所有权
1.4.2动态对象之外的资源
1.5模式1: 创建者是惟一所有者
1.6模式1.1: 函数是惟一所有者
1.7模式1.2: 对象是惟一所有者
1.8模式1.3: 类作为惟一所有者
1.9模式2: 所有者序列
1.10模式3: 共享所有权
1.11相关主题
1.12致谢
1.13参考文献第2章延迟优化: 高效smalltalk编程模式
2.1性能评估
2.2延迟优化
2.3性能标准
前言回到顶部↑
一种思想就仿佛风中的一粒种子:种子在落地、生根、开始成长之前并没有多大意义。模式(pattern)的思想在软件领域出现20年了,并已经最终落地和开始结果了。1994年编程模式语言会议(Pattern Languages on Programming conference,PLoP94)作为关于软件模式的第一次会议标志着软件模式活动的萌芽。接下来的一年中我们看到了含有大量模式文章的几本模式著作、杂志的出版,模式已经成为有关软件工程和面向对象技术的会议的主流内容。...
然后是PLoP95,它与前次会议有所不同,就如同一株秧苗与一棵小树之间的不同:它更强壮了,它的根扎得更深了,并且它与周围的环境越来越协调了。关注的重点已经从“模式究竟是什么?”转变到了“如何使模式变得有效,使一个有效的模式变得更有效?”这是一个意义深远的转变,是一个人类关于模式的思维快速成熟的信号。这种转变从自省转向一种健康的积极行为。许多人现在都赞同这样的观点: 一个模式的价值并不是在于它的发现,也不是在于它的定义,而是在于它的关联、它的质量,以及它的影响。软件中的模式就是它们所代表的有关技术的最重要的文化。
书写模式听起来挺简单,但实际上不是。这个努力过程有两部分: 认知我们自己在重现设计问题方面的智慧,以及有效地与该部分智慧沟通。
本书各章的作者们都熟知这个努力过程。它开始于对人们已经解决了的重现问题的反省; 然后描述重现问题解决方案的本质特性; 接着将描述的特性书写下来。这仅仅是开始。如果一个模式没有经过评判来改正自身,那么它总是无用的,这也就是为什么要举行PLoP。提交到PLoP的论文都要进入“指导过程”,在这里评审者将与作者对论文进行反复讨论,以提高论文的质量。一次提交的论文也许需要经过多次反复讨论之后才能确定是被接受或是被拒绝。
努力过程在PLoP继续着。论文并没有按照传统的方式被介绍。实际上,每篇论文都要在一个“作者的研讨会”中被评审,在那里作者倾听读者对自己的论文的讨论意见。作者不能参与讨论——这将会妨碍这个过程,使得编辑难以向其他读者灌输文章的实际信息。研讨会的目标是帮助作者提高论文水平,而不是维护它。
作者带着一个或者多个修改意见返回,并在将论文提交进行最后评审之前对论文进行修改。清除了最后一个障碍的论文将被包含到本书中。每一篇论文都必须经过相同的荆棘、暴风雨,以及犀利言辞的洗礼,然后才能成为本书中的一章。
对于种子和新的思想,你永远都不会准确了解它们是如何成长的。许多分支从模式的种子中萌芽,每个分支都沿着两条路径中的一条独立成长起来。一些分支按照Christopher Alexander[Alexander+77,Alexander+79]所宣称的路径成长,反映了他关于建筑体系的模式的开创性工作。Alexander将他的模式层次结构化成被称为“模式语言”的一个系统。但与藤蔓植物的分枝会自行发现自己的路径一样,这些Alexandrian风格的文章都采用了适合自己需要的形式: 当一个路径合适时它们就转到该路径。
其他的分支则根据“四人组”(Gang of Four,GOF)所描述的路径前行,这个绰号来自于软件模式第一本书的作者们[Gamma+95]。这些先驱者们发现了可以在面向对象软件设计中捕获智慧的被隔离模式的价值。他们的模式非常大,并且高度结构化,比Alexander的模式相互依赖性更小。他们帮助了更多的软件开发者认知和开发软件模式的优点,现在由于书写他们自己模式的努力他们已经受到更多的尊敬。
本书列举出了有关这些路径的大量范例。当读者研究本书的每一章时,请询问自己哪一章最适合自己,为什么适合。仔细查看风格、格式、被提出的问题、所解决的领域、结果以及每个模式的缺点。
然后开始行动。一个充满活力的模式社区需要每一个人的参与。你是否已经发现模式的方式适合自己的工作?如果是,请将它们提炼出来。你是否在其中发现了可以与同事共享的智慧?那么请让他们知道这些。你能否识别那些自己已经获取但是需要归档的智慧?请将它写下来,让其他人评论它。同时请考虑将它提交到下一次PLoP!
没有哪一本书可以不经过幕后人们的帮助而成文,但是PLoP付出了额外的努力。Hillside集团的成员组织了这次会议。来自于伊利诺伊UrbanaChampaign大学的Brian Foote和他的学生、同事们为汇编这些文章、反复复制和分发它们,以及为使本次会议运作更好而提供了非常宝贵的帮助。这些带头人如同无私的牧羊人看管着自己的羊群一般名副其实。那些PLoP非作者群的参与者们所做的贡献一样需要致谢,这使得PLoP不再是一个被动的倾听经历; 阅读多篇文章,然后给出仔细斟酌、建设性的反馈是一种艰苦的工作。在这里向所有参与者表示诚挚的感谢!
在本系列前面的著作[Coplien+95]中,我们已经避免了干预每个作者成果形式的细节以及布局,正如我们渴望排版上的一致一样。因此我们在AddisonWesley的朋友们由于达到了排版方面的成就而倍受欢迎。Deborah Lafferty通过文雅但是坚决的方式引导出版的效果; 她的保持项目按计划进行的能力令人吃惊。Rojean Wagner以及新英格兰Editorial Services的员工们接受了大量电子格式以及不停涌现的要求所带来的挑战。向Tom Stone表示特别感谢,感谢他冒着风险给一个初出茅庐的人以支持的声音。
最后,我们要认识对于本书成功来说最重要的人们——模式作者们。他们已经选择了同我们其他人共享自己的智慧,他们在这个过程中做出了巨大牺牲。花费时间来揭示什么才能更好地实现有竞争性的优势是需要勇气和奉献的。我们代表所有从其劳动中获益的人向他们致谢!
J.M.V
J.O.C
N.L.K
[Alexander+79]C Alexander. The Timeless Way of Building.New York:Oxford University Press,1979
[Alexander+77]C Alexander,et al. A Pattern Languages.New York: Oxford University Press,1977
[Gamma+95]E Gamma,R Helm,R johnson,J Vlissides.Design Patterns: Elements of Reusable ObjectOriented Software.Reading,MA:AddisonWesley,1995
然后是PLoP95,它与前次会议有所不同,就如同一株秧苗与一棵小树之间的不同:它更强壮了,它的根扎得更深了,并且它与周围的环境越来越协调了。关注的重点已经从“模式究竟是什么?”转变到了“如何使模式变得有效,使一个有效的模式变得更有效?”这是一个意义深远的转变,是一个人类关于模式的思维快速成熟的信号。这种转变从自省转向一种健康的积极行为。许多人现在都赞同这样的观点: 一个模式的价值并不是在于它的发现,也不是在于它的定义,而是在于它的关联、它的质量,以及它的影响。软件中的模式就是它们所代表的有关技术的最重要的文化。
书写模式听起来挺简单,但实际上不是。这个努力过程有两部分: 认知我们自己在重现设计问题方面的智慧,以及有效地与该部分智慧沟通。
本书各章的作者们都熟知这个努力过程。它开始于对人们已经解决了的重现问题的反省; 然后描述重现问题解决方案的本质特性; 接着将描述的特性书写下来。这仅仅是开始。如果一个模式没有经过评判来改正自身,那么它总是无用的,这也就是为什么要举行PLoP。提交到PLoP的论文都要进入“指导过程”,在这里评审者将与作者对论文进行反复讨论,以提高论文的质量。一次提交的论文也许需要经过多次反复讨论之后才能确定是被接受或是被拒绝。
努力过程在PLoP继续着。论文并没有按照传统的方式被介绍。实际上,每篇论文都要在一个“作者的研讨会”中被评审,在那里作者倾听读者对自己的论文的讨论意见。作者不能参与讨论——这将会妨碍这个过程,使得编辑难以向其他读者灌输文章的实际信息。研讨会的目标是帮助作者提高论文水平,而不是维护它。
作者带着一个或者多个修改意见返回,并在将论文提交进行最后评审之前对论文进行修改。清除了最后一个障碍的论文将被包含到本书中。每一篇论文都必须经过相同的荆棘、暴风雨,以及犀利言辞的洗礼,然后才能成为本书中的一章。
对于种子和新的思想,你永远都不会准确了解它们是如何成长的。许多分支从模式的种子中萌芽,每个分支都沿着两条路径中的一条独立成长起来。一些分支按照Christopher Alexander[Alexander+77,Alexander+79]所宣称的路径成长,反映了他关于建筑体系的模式的开创性工作。Alexander将他的模式层次结构化成被称为“模式语言”的一个系统。但与藤蔓植物的分枝会自行发现自己的路径一样,这些Alexandrian风格的文章都采用了适合自己需要的形式: 当一个路径合适时它们就转到该路径。
其他的分支则根据“四人组”(Gang of Four,GOF)所描述的路径前行,这个绰号来自于软件模式第一本书的作者们[Gamma+95]。这些先驱者们发现了可以在面向对象软件设计中捕获智慧的被隔离模式的价值。他们的模式非常大,并且高度结构化,比Alexander的模式相互依赖性更小。他们帮助了更多的软件开发者认知和开发软件模式的优点,现在由于书写他们自己模式的努力他们已经受到更多的尊敬。
本书列举出了有关这些路径的大量范例。当读者研究本书的每一章时,请询问自己哪一章最适合自己,为什么适合。仔细查看风格、格式、被提出的问题、所解决的领域、结果以及每个模式的缺点。
然后开始行动。一个充满活力的模式社区需要每一个人的参与。你是否已经发现模式的方式适合自己的工作?如果是,请将它们提炼出来。你是否在其中发现了可以与同事共享的智慧?那么请让他们知道这些。你能否识别那些自己已经获取但是需要归档的智慧?请将它写下来,让其他人评论它。同时请考虑将它提交到下一次PLoP!
没有哪一本书可以不经过幕后人们的帮助而成文,但是PLoP付出了额外的努力。Hillside集团的成员组织了这次会议。来自于伊利诺伊UrbanaChampaign大学的Brian Foote和他的学生、同事们为汇编这些文章、反复复制和分发它们,以及为使本次会议运作更好而提供了非常宝贵的帮助。这些带头人如同无私的牧羊人看管着自己的羊群一般名副其实。那些PLoP非作者群的参与者们所做的贡献一样需要致谢,这使得PLoP不再是一个被动的倾听经历; 阅读多篇文章,然后给出仔细斟酌、建设性的反馈是一种艰苦的工作。在这里向所有参与者表示诚挚的感谢!
在本系列前面的著作[Coplien+95]中,我们已经避免了干预每个作者成果形式的细节以及布局,正如我们渴望排版上的一致一样。因此我们在AddisonWesley的朋友们由于达到了排版方面的成就而倍受欢迎。Deborah Lafferty通过文雅但是坚决的方式引导出版的效果; 她的保持项目按计划进行的能力令人吃惊。Rojean Wagner以及新英格兰Editorial Services的员工们接受了大量电子格式以及不停涌现的要求所带来的挑战。向Tom Stone表示特别感谢,感谢他冒着风险给一个初出茅庐的人以支持的声音。
最后,我们要认识对于本书成功来说最重要的人们——模式作者们。他们已经选择了同我们其他人共享自己的智慧,他们在这个过程中做出了巨大牺牲。花费时间来揭示什么才能更好地实现有竞争性的优势是需要勇气和奉献的。我们代表所有从其劳动中获益的人向他们致谢!
J.M.V
J.O.C
N.L.K
[Alexander+79]C Alexander. The Timeless Way of Building.New York:Oxford University Press,1979
[Alexander+77]C Alexander,et al. A Pattern Languages.New York: Oxford University Press,1977
[Gamma+95]E Gamma,R Helm,R johnson,J Vlissides.Design Patterns: Elements of Reusable ObjectOriented Software.Reading,MA:AddisonWesley,1995







点击看大图



加载中...

