Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1504169
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 20:56:33

一起学习
世界第一本OO字典主编Donald Firesmith预言:从现在到1999年,OO样式观念的进展将在OO技术领域之中一枝独秀,具有革命性。 经典之着--软体样式(Design Patterns)是1995年排行第一的OO书籍,新一代杰出软体师皆人手一册。 于此,说明一些样式的观念,叙述样式与物件观念的结合发展过程,并列出从1964至1996年2月之间的45篇重要书籍和文章,供您参考。 Δ人们何时会用到样式呢﹖ 在进退维谷的困境中。例如﹐孔明面对司马懿的兵临城下﹐攻守皆有危机。例如﹐为了保健﹐家庭常存有药罐﹐但小孩婴儿常会误食。例如﹐想和男友结婚﹐但又怕伤父母之心。 Δ为什么人们会去寻找样式﹖ 在进退维谷之状况下﹐未曾面对过﹐尚无经验者往往会不知所措、进退失据﹐才会感到此状况是个困境。在不知所措时﹐常心想﹕别人是否也遭遇过类似情况﹖他们是如何面对呢﹖自然会想去请教专家或向别人学习﹐尝试套用别人的做法(样式)来解决自己的困境。 Δ使用样式时﹐有何感觉﹖ 心头郁闷一扫而空的感觉。 柳暗花明又一村的感觉。 四两拨千斤的感觉。 「要是没有这一招﹐我真的不知如何是好」的感觉。 Δ为什么会有柳暗花明又一村的感觉呢﹖ 样式常朦胧依俙可见﹐而非显而易见。是由经验中推敲出来﹐去芜存菁后的间接性方案(indirect solution)。 例如﹐孔明的「空城计」是细心推敲而得的构思﹐而不是信手招来的简单直接方案﹐而必须从丰富的经验之中提炼出来的。 已有的经验愈丰富、或样式的运用愈熟练﹐就会觉得样式是极明显的方案。 Δ为何依样(式)画葫芦﹐但仍常有「画虎不成反似犬」之情形呢﹖ 样式是抽象的模板(template)﹐让您套用它、修正它、加上环境(context) 因素﹐才会得到具体可行的方案(solution)。所以样式告诉您理想的方案像什么、有那些特性﹔同时也告诉您些规则﹐让您依循之﹐而产生适合于环境的具体方案。 当规则的掌握不灵活、或无法充分融入外在环境因素﹐可能无法得到具体有效的方案。 Δ为什么设计师经常使用样式呢﹖ 设计品常需融入环境因素﹐并使环境与设计品构成和谐的整体。在设计过程中﹐常会面临环境的各种需求和条件﹐来自不同方面的需求可能会互相冲突而呈现不和谐的现象。因而不断运用样式来化解冲突使其变为均衡和谐﹐亦即不断把环境因素注入样式中而产生有效的方案来使冲突之力量不再互相激荡。 有效的设计专家﹐会大量运用其惯用之样式﹐而不会一切从头创造新方案(reinvent the wheel)。 Δ为什么好的设计品会令人感到快活(alive) 呢﹖ 样式运用得好﹐能化解冲突为详和﹐问题(problem) 也迎刃而解﹐自然令人感到舒畅。 好的设计师以流畅的方式将令人舒畅的样式组合而成设计品﹐其设计品自然令人感到快活。 Δ什么是流畅的组合方式呢﹖ 样式的组合就如同写作文章﹐样式是字汇 或成语﹐而设计品就如同写作出来的句子或文章。 写作文章时﹐人们依循文法规则及风格而将字汇成语流畅地组合成句子﹐再流畅地组合成文章。 每位作家皆有各自的一套规则和风格来写作文章。同理﹐每位设计家皆各有一套规则来变样式流畅地组合成为设计品。 于是﹐ 一堆字汇、成语 一套规则(文法和风格)≡ 一个自然语言 同样地, 一堆样式 一套规则 ≡ 一个样式语言(pattern language) 最理想的是﹕人人心中的样式语言能大同小异。 由于规则仍藉由样式表达出来﹐所以 { 样式} ≡ 一个样式语言 Δ样式与reuse 之间有何关系﹖ 样式是设计专家「屡试不爽」的妙招﹐所以只有reusable的样式才会长存于专家心中﹐即样式必有个特性 reusable。 Δ为什么样式语言像树木的基因(gene)呢﹖ 如同一般语言﹐含有限的字汇、成语和文法规则﹐而能进行无限多种的组合﹐产生无限的句子及文章。 样式语言﹐含有限的样式﹐而设计师能进行无限的组合﹐产生无限种的设计品。 在无限组合与变化之中﹐因大家使用极相近的样式语言﹐使得设计品呈现出一致性(uniformity)。 树的基因的作用﹕使千千万万的树没有两棵是一模一样﹐但却具有高度的一致性。基因让树木之间的一致性(uniformity)与变化性(variety) 维持平衡。设计者之间使用共通的样式语言﹐使得设计品没有两个会一模一样﹐但却具有高度的一致性。样式语言让设计品之间的一致性与变化性维持平衡。 基因维持结构的一致﹐但不局限各部位的随环境而变化﹐使得树木能生生不息﹐并与环境和谐相处。 样式语言维持设计品结构的一致﹐但未局限各部位的随环境而变化﹐使得设计品(如软体)能生生不息﹐并与环境(如其它软体)和谐共存。 基因创造了树木的有机次序(organic order) ﹐样式语言则创造了设计品的有机次序。有机次序塑造了自然之美。 Δ大家皆「有样学样﹐依样画葫芦」﹐岂非就不用思考﹐扼杀掉创造力了吗﹖ 样式是抽象的﹐套用时必须视环境(context) 的需求而修正﹐然后才产生具体的方案。样式只是引导人们的创意﹐使其融合别人的智慧﹐并充分考虑外在环境的需求。例如﹐食谱并未限制厨师的创新﹐反而常激发厨师的新创意。 设计的新手们经由样式的引导﹐成长会加速﹐具有建设性。 Δ样式有助于解决软体的复杂性与困境吗﹖ 顶尖软体思想大师Fred Brooks 在二十多年前就指出﹕大型软体的困境是来自于设计的参与者之间﹐其设计的理念(conceptual)并不一致(integrity) 。至今﹐他仍认为这个困难尚未解决。 如果设计参与者人人皆使用共同的样式语言﹐同时使用者也使用相同的样式语言﹐则样式语言像基因一样﹐保持着一致性﹐就有希望使得软体设计师的理念一致了﹐并合乎使用者的理念,软体的困境就能解决了。 由于物件软体设计(OOAD)方法与样式的互补性,近年来,OOAD方法逐渐纳入样式观念。本文详细介绍样式与物件的恋爱史,并列出1964至1996年间的50篇文章和书籍,让您也分享甜蜜滋味,并祝福公主和王子从此过着幸福快乐的日子! 1964-1971 年 1964年﹐著名建筑学家Christopher Alexander 出版一本书﹕ Notes on the Synthesis of Form〔参1〕 他提出Form观念﹐认为设计师可创造Form来化解环境中互相冲突的需求﹐使冲突变成为和谐的景象。他也提出pattern (样式)观念﹐样式可引导设计师逐步创造出Form﹐以便化解互相冲突之需求。1971年﹐该书再版上市﹐此时正是软体结构化设计(structured design) 方法的萌芽阶段﹐该书对当时Ed Yourdon和Larry Constantine 的结构化观念的诞生具有决定性的影响力〔参2 〕。 1972-1985 年 在这期间﹐Alexander 任教于加州柏克来大学﹐他和其同事共同研究Pattern 观念﹐并出版了四本书﹕ 1. The Timeless Way of Building〔参3 〕 --完整地介绍他的Pattern 观念﹐以及Pattern Language观念。 2. A Pattern Language〔参4〕 --实际列举了253 个建筑方面的样式。 3. The Oregon Experiment〔参5〕 -- 叙述在奥勒兰大学的实验过程。 4. The Production of Horses 〔参6〕 --叙述在墨西哥的实验情形﹐也详述这实验并未成功的原因。 1986-1989 年 这期间﹐随着C 诞生﹐OO技术日益成熟﹐这时Alexander 的样式观念再度影响软体的设计方法。1987年﹐Ward Cunningham 和Kent Beck 两人首先尝试将OO观念与样式观念结合起来。他们的研究着重于使用者介面(user interface)方面﹐并在OOPSLA/87 会议上发表其成果〔参7〕〔参8〕。不过﹐他们的研究并未立即引起热潮。 1990年 在欧洲的OOPSLA/90 会议上﹐由Bruce Andreson主持的"Architectural Handbook"研讨会中﹐Erich Gamma 和Richard Helm等人开始谈论有关样式的话题。 1991年 在OOPSLA/91 会议上﹐由Anderson主持的研讨会中﹐Gamma 和Johnson 等人再度一起讨论样式的相关问题。 Erich Gamma 完成了他的博士论文 “Object-Oriented Software Development based on ET : Design Patterns, Class Library, Tools ” 〔参9 〕 Peter Coad也进行有关样式之研究。 James Coplien 在贝尔实验室里﹐也着手研究有关企业组织方面的样式(organization pattern)。 样式观念开始出现在大众化的电脑软体杂志上﹐例如﹕Tom Love撰写的"Timeless Design of Information Systems" 〔参10〕。这开始介绍如何将样式观念引入到软体领域之中。 1992年 在OOPSLA/92 会议上﹐Andreson再主持研讨会﹐样式观念已渐成为热门的话题。在研讨会中﹐伊利诺大学教授Ralph Johnson 发表其有关样式与应用架构(application framework) 之关系〔参11〕。 Peter Coad在 ACM 期刊上发表了OOA 方面的7 个样式〔参12〕。 在大众化的电脑杂志上也继续出现有关样式的文章〔参13〕。 1993年 这年﹐样式已跃居OO领域最热门的话题。 在1993年8 月份﹐Kent Beck 邀请Grady Booch 、Richard Helm、Ralph Johnson、Ward Cummingham 、James Coplien 、Ken Auer及Hal Hildebrand一起聚会于美国中部科罗拉多(Colorado)州的落矶山(Rocky Mountain)麓﹐共同讨论如何将Alexander 的样式观念与OO观念结合起来。他们决定以Gamma 的「设计样式」研究成果为基础﹐继续努力研究下去。这个样式研究组织就称为「山边小组」(Hillside Group)。 在大众化电脑软体杂志上﹐有关样式的文章日渐增加﹐例如﹕G. Booch 谈样式与机制(mechanism) 观念的相通之处〔参14〕。R. Gabriel 在JOOP杂志的"Critic-at-Large"专栏中﹐自二月份起〔参16〕﹐连载他对样式观念的看法﹐这专栏一直连续到1994年。E. Gamma 在ECOOP/93会议上发表有关样式 与Design Reuse之关系。 1994年 8 月4 日﹐由「山边机组」发起﹐在Illinois的Allerton Park 地方召开的第1 届OO Pattern世界性会议﹐名称叫「Pattern Languages of Programs」 ,简称为PLoP'94 。这并非传统的大型会议﹐而是由二十外位来自全世界各地的论文提供者互相讨论﹐交流心得与意见。其论文则由J. Coplien 和D. Schmidt 一起编辑成书﹐名称为Pattern Languages of Program Design ,并在1995年出版上市〔参17〕。R. Johnson 也在ROAD杂志上介绍这次会议的成果和评论〔参18〕。Coplien也详细介绍PLoP'94 的讨论情形〔参19〕。 J. Soukup 出版新书谈C 的样式类别〔参20〕。 G. Booch 的名著 Object-Oriented Analysis and Design:with applications 第二版上也引用许多样式观念。 6 月份﹐J. Coplien 在纽约的ObjectExpo研讨会上﹐谈到有关软体样式方面的常见问题和答案〔参23〕。 在大众化杂志上﹐继续出现有关于样式的文章﹐例如﹐K. Beck 说明了样式是电脑人员之间的有效沟通工具〔参21〕。K. Beck 和R. Johnson说明样式与主架构(architecture)之间的关系〔参24〕。 Coplien介绍组织与软体发程序之样式〔参25〕。 1995年 这年,样式的应用层面逐渐增大﹐例如GUI 、networking等应用。 9 月份PLoP'95 仍在Illinois的Allerton Park 地方举行。共有70多人参加﹐论文题目比前一年更加多样化﹐包括Web Pages 制作的样式等等。D. Anthony简介 PLoP‘95的讨论情形[参41]。其论文将由John Vlissides等人负责编辑成书并发行上市。 E. Gamma 等人出版名著 Design Patterns:Elements of Reusable Object-Oriented Software 一书﹐成为1995年最抢手的OO书籍〔参26〕。 P. Coad出版Object Models:Strategies, Patterns, and Applications一书〔参27〕。列举了31个object-model的样式。 J. Coplien 和D. Schmidt 合编的书 Pattern Languages of Program Design也成为极抢手的OO书籍〔参17〕。 Rational公司的Unified Method也将加入样式观念。 在大众化的杂志上﹐各种样式纷纷出笼﹐美不胜收。例如﹕K. Freed谈主从架构设计中的常用样式〔参28〕。 J. Coplien谈OO样式的常见问题〔参29〕﹐且谈样式与工程、建筑、艺术之间的关系〔参30〕。D. Schmidt说明Microsoft's Windows Open Services Architecture中的样式〔参31〕。Koenig 谈Patterns与anti-Patterns 观念〔参32〕。 D. Schmidt谈Unix及Windows NT中的样式〔参33〕。J. Rumbaugh谈样式观念﹐以及样式与软体方法(Methodolgy)之关系〔参34〕。J. Coplien 谈如何在既有系统中发掘样式〔参35〕。J. Vlissides深入谈Visitor 样式〔参36〕。P. Coad 说明如何藉由样式寻找有关的物件〔参37〕。 1996年 从1996年起PLoP会议改到别地方举行。 今年,样式话题有更加流行的趋势,例如:J. Coplien谈人群行为方面之样式〔参38〕。D. Schmidt谈网路服务方面的样式〔参39〕。J. Vlissides谈档案管理系统中的样式〔参40〕。K. Beck进一步阐述样式的基本观念〔参42〕。K. Brown 仔细说明如何藉由样式来获得理想的软体设计〔参43〕。 世界第一本OO字典的主编--D. Firesmith预言:从现在到1999年,OO样式观念的进展将在OO技术领域之中一枝独秀,具有革命性〔参44〕 Karl Lieberherr提出Demeter Method,将软体样式视为软体的成长基因(gene),能创造出可随环境而不断调适的软体[参46]。Chung-Yeung Pang 说明如何把样式融入类别与物件里来支持系统的需求[47]。James Coplien 谈到performance pettern 的重要性。 物件/样式情书选读 [1] Alexander, C., Notes on the Synthesis of Form. Harvard University Press, Cambridge, Massachusetts, 1971. [2] Yourdon, E., "Object-Oriented Design", American Programmer, March 1990.PP.14-24. [3] Alexander, C., The Timless Way of Building, Oxford University Press, New York, 1979. [4] Alexander, C., A Pattern Language, Oxford University Press, New York, 1977. [5] Alexander, C.,The Oregon Experiment, Oxford University Press, New York,1978. [6] Alexander, C., The Production of Houses, Oxford University Press, NewYork, 1985. [7] Cunningham, W., “Panel on design methodology”, ACM SIGPLAN Notices,1993 PP.94-95(Addendum to the Proceedings of OOPSLA'87). [8] Beck, K., “Using a pattern language for programming”, Workshop on Specification and design, ACM SIGPLAN Notices PP.16, 1988 (Addendum to the Proceeding of OOPSLA'87). [9] Gamma, E., Object-Oriented Software Development based on ET :Design Patterns, Class Library, Tools(in German). PhD thesis, University of Zurich, 1991. [10] Love, T., "Timeless Design of Information Systems", Object Magazine ,PP.42-48, NOV-DEC 1991. [11] Johnson, R., "Documenting Framework Using Patterns", In OOPSLA/92 Proceedings, PP.63-76, ACM Press, 1992. [12] Coad, P., "Object-Oriented Patterns", Communications of ACM, PP.152-159, September 1992. [13] Bowles, A., "Developing Organic Systems", Object Magazine, PP.21-22, JAN-FEB 1992. [14] Booch, G., "Patterns", Object Magazine, PP.24-28, July-August 1993. [15] Bowles, A., "Lessons From Urban Planning:System zoning and building inspections", Object Magazine, PP.24-26, Nov-Dec 1993. [16] Gabriel, R., "Habitability and Piecemeal Growth", JOOP, PP.9-14, Feb 1993. [17] Coplien, J., and Schmidt, D. Pattern Languages of Program Design, Addition-Wesley, Reading, *MA 1995. [18] Johnson, R., "A Report on PLOP'94", Report on Object Analysis and Design, NOV 1994. [19] Coplien, J., "What I did on my summer vacation?", C Report, Nov-Dec 1994. [20] Soukup, J., Taming C :Pattern Classes and Persistence for Large Projects, Addison-Wesley, Reading, MA, 1994. [21] Beck, K., "Patterns and Software Development", Dr. Dobb's Journal, PP.18-22, Feb 1994. [22] Gabriel, R., "Pattern Languages", JOOP, PP.72-75, Jan 1994. [23] Coplien, J., "Software Design Patterns:Common Questions and Answers", Object Expo Conference Proceddings, SIGS, 1994. [24] Beck, K. and Johnson, R.,"Patterns Generate Architectures", Proceeding ECOOP'94. [25] Coplien, J., "Pattern Languages for Organization & Process", Object Magazine, July-August 1994. [26] Gamma, E. et al., Design Patterns:Reusable elements of Object-Oriented Software, Addison-Wesley, Reading, MA, 1995. [27] Coad, P., Object Models:Strategies, Patterns and Applications, Prentic-Hall Englewood Cliffs, NJ, 1995. [28] Fred, K., "Client/Server Analysis and Design Patterns", Software Development, July 1995. [29] Schmidt, D., "Virtual Interview with James Coplien", C Report, Sept. 1995. [30] Coplien, J., "Software Development as Science, Art, and Engineering", C Report, July-August 1995. [31] Schmidt, D., "The Timless Way of Developing Software", Software Development, May 1995. [32] Koenig, A., "On Patterns and Antipatterns", JOOP, March-April 1995. [33] Schmidt, D., and Stephenson, P. "Using Design Patterns to Evolve System Software from UNIX to Windows NT", C Report, March-April, 1995. [34] Rumbaugh J., "What is a method?", JOOP, OCT 1995. [35] Coplien, J., "Pattern Mining", C Report, OCT 1995. [36] Vlissides, J., "Visiting Rights", C Report, Sept 1995. [37] Coad, P., “The Object Puzzle”, Windows Tech Journal, DEC 1995. [38] Coplien, J., "The Human Side of Patterns", C Report, Jan 1996. [39] Schmidt, D., "Connector: A Design Pattern for Actively Initializing Network Services", C Report, JAN 1996. [40] Vlissides, J., Protection, Part I:The Hollywood Principle", C Report, FEB 1996. [41] Anthony, A.,“PLoP 95”, Object Magazine, JAN 1996. [42] Beck, K., “Patterns 101”, Object Magazine, JAN 1996. [43] Brown, K., “Experiencing Patterns at the Design Level”, Object Magazine, JAN 1996. [44] Firesmith, D., “Pattern Language for Testing Object-Oriented Software”, Object Magazine, JAN 1996. [45] Helm, R., “Patterns in Practice”, Coference Proceedings OOPSLA‘95, PP.337-341, Addison Wesley, Reading, MA, 1995. [46] Lieberherr, K., Adaptive Object-Oriented Software: The Demeter Method, PWS Publishing Comapny, Boston, 1996. [47] Pang, C., "system modeling and design with objects and patterns", JOOP, May 1996. [48] Coplien, J., "After All, We Can not Ignore Efficiency", C [45] Helm, R., “Patterns in Practice”, Coference Report, May 1996. [49] Schmid, H., “Design patterns for condtructing the hot spots of a manufacturing framework”,JOOP, AUG 1996. [50] Dargan, P., “Action-Centered Design”, Bringing Design to Software, edited by Winograd, T., Addison Wesley, 1996.n 下载本文示例代码


设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少设计Pattern观念知多少
阅读(131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~