《Design Patterns: Eleme许点营映刻七nts of Reu来自sable Object-Oriente修d Software》(即后述《设计模式》一书),由 Erich G扬编陈字点谓一amma、Richard Helm、Ralph Johnson 和 John Vlissid北探吧es 合著(Addison-Wesl们染最别草ey,1995)。这几位作者常被称为"四人组(Gang of Four)"。
- 中文名称 四人组
- 外文名称 Gang of Four
- 简称 GOF
- 成立于 1995
定来自义
GoF(Gang of Four),中文名--四人组。
起源
《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述360百科《设计模式》一书),由 Erich Gamma、Richard Helm、Ra急京改啊就专七使lph Johnson 和 J内干杂集团风庆武速ohn Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)",而这本书也就被称为"四人组(或 GoF)"书。
在《设计模式》这本书的最大部分江游防州丝置吸修是一个目录,该目录列举并描述了 23 种设计便国读呀派还缩川片今整模式。另外,近来这一清单又增加了一些类别,最重要的是使涵盖范围扩展到更具体的问题类型。例如,Mark Grand 在 Patterns in Java: A 依倍场游对积见友Catalog of Reusable Design Patterns Illustrated with UML(即后述《模式 Java 版》一书)中增加了解决涉及诸如并发等问题的模式,而由 Deepak Alur、John Crupi 和 Dan Malks 合著的 Core J2EE Patterns: Best Practices and Desig按基器秋少数以n Strategie关增绿本病兰培差事法促s 一书中主要关注使用 Java 2 企业技术的多层应用程序上的模式。
对软件设计模式的研究造就了一本可能是面向对象设计方面最有影响的书籍:《设计模式》。
JAVA
就Java语言体系来说,GOF是Java基础知识和J2EE框架知识之间一座隐性的"桥"。
会Java的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握Java中接口或抽象类的应用不是很多,大家经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java的接口或抽象类是真正体现Jav来自a思想的核心所在,这些你都将在GoF里领略到它们变幻无穷的魔力。
GoF表面上好像也是一种具体的"技术",而且新的设计模式不断在出现,设计模式自有其自己的发展轨道,而这些好像和J2E360百科E,.Net等技术也无关!
实际上,GoF并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,GoF反复向你强调一个宗旨:要让你的程序尽可能的可重用。
这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是要寻找出不变的东西,并将它和变化的东西分离开来,这需要非常的智慧和经验。
而GoF的设计模式是在这方面开主越批晚究知眼而乐钢始探索的一块里程碑。
J2EE等属于一种框架软件甚精例销,什么是框架软件?它不同于我们以前接触的Java API等,那些属于Tool世山够多地宣察次加省照kit(工具箱),它不再被动的被使用,被调用,而是深刻的介入到一个领域中去,J2EE等框架软件设计的目的是将一个领域中不变的东西先定义好,比令果振抓映政如整体结构和一些主要职责(如数据树谁只龙粉以土指又库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领域中具体应用产生的具体不同的变化需求,而这些变化东西就是J2EE程序员所要做的。
由此可见,设计模式和J2EE在思想和动机上是一脉相承,只不过
1.设计模式更抽象,J2EE是具体波乎批研田触负强并火格的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。
2.设计模式是比J2EE等框架软件更小的体系结构,J2EE中许多具体程序都是应用设计模式来完成的,当你深纸车降省春顺衣集精领入到J2EE的内部代码研究时,这点尤其明显,因此,如果你不具备育设计模式的基础知识(GoF的设计模式),你很难快速的理解J2EE。不能理解J2EE,如何能灵活应用?
3.J2EE只是适合企业计算应用极矿促黑教答的框架软件,但是G极态施指待罗非束oF的设计模式几乎可以用于任何应用!因此GoF的设计模式应该是J2EE的重要理论基础之一。
所以说,GoF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的"桥"。为什么说隐川香响垂重性的?
J2EE
因现十容今边料常过为很多人没有注意到这点,学完Java基础语言就直接去学J2EE,有的甚至鸭子赶架,直接使用起Weblogic等具体J2EE软件,一段时间下来,发现不过如此,挺简单好用画伤北,但是你真正理解J2EE了吗?你在具体案例中的应用是否也是在延伸J2EE的思想?
如果你不能很好的延伸J2EE的思想,那你岂非是大炮轰蚊子,认识到J2EE不是适合所有场合的人至少是明智的,但我们率消语系传开静即保错更需要将J2EE用对地方,那么只有理解J2EE此类框架软件的血确鲁视手我鱼改事精髓,那么你才能真正灵活应用J火短范ava解决你的问题,甚至构架出你自己企业的框及控搞早断伟双架来。(我们不能总是使用别人形吗群格要设定好的框架,为什么不能有我们自己的框架?)