为UML争吵没有意思,还是把基础打好,看"学习GoF设计模式的重要性"!

原创 2004年09月25日 16:35:00
为UML争吵没有意思,还是把基础打好,看"学习GoF设计模式的重要性"!
学习GoF设计模式的重要性
板桥里人 http://www.jdon.com 

GoF的《设计模式》也许你没有听说过,但是《Thingking in Java》(Java编程思想)你应该知道甚至读过吧!

在浏览《Thingking in Java》(第一版)时,你是不是觉得好象这还是一本Java基础语言书籍?但又不纯粹是,因为这本书的作者将面向对象的思想巧妙的融合在Java的具体技术上,潜移默化的让你感觉到了一种新的语言和新的思想方式的诞生。

但是读完这本书,你对书中这些蕴含的思想也许需要一种更明晰更系统更透彻的了解和掌握,那么你就需要研读GoF的《设计模式》了。

《Thingking in Java》(第一版中文)是这样描述设计模式的:他在由Gamma, Helm和Johnson Vlissides简称Gang of Four(四人帮),缩写GoF编著的《Design Patterns》一书中被定义成一个“里程碑”。事实上,那本书现在已成为几乎所有OOP(面向对象程序设计)程序员都必备的参考书。(在国外是如此)。

GoF的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。

GOF的设计模式是一座"桥"
就Java语言体系来说,GOF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的"桥"。

会Java的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握Java中接口或抽象类的应用不是很多,大家经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java的接口或抽象类是真正体现Java思想的核心所在,这些你都将在GoF的设计模式里领略到它们变幻无穷的魔力。

GoF的设计模式表面上好象也是一种具体的"技术",而且新的设计模式不断在出现,设计模式自有其自己的发展轨道,而这些好象和J2EE .Net等技术也无关!

实际上,GoF的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,GoF的设计模式反复向你强调一个宗旨:要让你的程序尽可能的重用性。

这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是寻找出不变的东西,并将它和变化的东西分离开来,这需要人类的多少智慧和经验啊。

而GoF的设计模式是开始这方面探索的里程碑。

J2EE .Net属于一种框架软件,什么是框架软件?它不同于我们以前接触的Java API等,那些属于Toolkist(工具箱),它不再被动的被使用,被调用,而是深入的介入到一个领域中去,J2EE等框架软件设计的目的是将一个领域中不变的东西先定义好,比如整体结构和一些主要职责(如数据库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领域中具体应用产生的具体不同的变化需求,而这些变化东西就是J2EE程序员所要做的。

由此可见,设计模式和J2EE在思想和动机上是一脉相承,只不过

1.设计模式更抽象,J2EE是具体的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。

2.设计模式是比J2EE等框架软件更小的体系结构,J2EE中许多具体程序都是应用设计模式来完成的,当你深入到J2EE的内部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF的设计模式),你很难快速的理解J2EE。不能理解J2EE,如何能灵活应用?

3.J2EE只是适合企业计算应用的框架软件,但是GoF的设计模式几乎可以用于任何应用!因此GoF的设计模式应该是J2EE的重要理论基础之一。

所以说,GoF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的"桥"。为什么说隐性的?

GOF的设计模式是一座隐性的"桥"
因为很多人没有注意到这点,学完Java基础语言就直接去学J2EE,有的甚至鸭子赶架,直接使用起Weblogic等具体J2EE软件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解J2EE了吗?你在具体案例中的应用是否也是在延伸J2EE的思想?

如果你不能很好的延伸J2EE的思想,那你岂非是大炮轰蚊子,认识到J2EE不是适合所有场合的人至少是明智的,但我们更需要将J2EE用对地方,那么只有理解J2EE此类框架软件的精髓,那么你才能真正灵活应用Java解决你的问题,甚至构架出你自己企业的框架来。(我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?)

因此,首先你必须掌握GoF的设计模式。虽然它是隐性,但不是可以越过的。

打好基础,很重要

在21IC上面看到一个关于基础讨论的帖子:把老谭的书每个角落都仔细看7-8遍,例子做三遍,《C++高质量编程》,有关C的部分看个3-5遍,搞懂每个细节。《嵌入式程序员的0x10个问题》,看个3-5遍,...
  • wuxi_stl
  • wuxi_stl
  • 2008年01月23日 12:51
  • 200

四巨头GoF的《设计模式》中23种设计模式的UML图 - 2 of 4

INTENTS AND DIAGRAMS OF 23 DESIGN PATTERNS 1: DOTV 2: PAMIB 3: SFC *Decorator: A DECORATOR att...
  • wubinben28
  • wubinben28
  • 2013年01月25日 20:38
  • 2797

谈程序员基础的重要性

近来一直担心毕业需要写论文的问题,基本都没碰过编程的东西了。要写论文才发现做研究真的很难,在此向奋斗在科研一线的xdjm们致敬了!言归正传,论文刚有了一点思路就像放松一下,最近刚入了一个android...
  • yanleizhouqing
  • yanleizhouqing
  • 2016年07月12日 09:11
  • 912

GoF 23个设计模式通用类图(含下载)

http://haolloyin.blog.51cto.com/1177454/333014 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任...
  • bluetjs
  • bluetjs
  • 2016年09月10日 14:48
  • 424

GoF设计模式之行为型模式

GoF设计模式中,行为模式有: 1. 责任链模式 Chain of Responsibility Pattern 意图:减少发送着和接收者之间的耦合,将请求在接收者链上传递,直到该请求被处理。 ...
  • code886
  • code886
  • 2017年04月02日 15:09
  • 250

Java:GOF的23种设计模式(上)

此次学习主要是参考liang
  • leelit
  • leelit
  • 2014年10月20日 14:27
  • 2063

GOF23种设计模式精解

创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(...
  • zhangcanyan
  • zhangcanyan
  • 2016年06月28日 21:14
  • 7792

GoF的23个经典设计模式

以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟。GoF(“四人帮”,又称Gang of Four,即E...
  • jiangfei009003
  • jiangfei009003
  • 2014年01月05日 15:13
  • 2877

大话设计模式——UML图

一、前言很多博客里面都会涉及到UML图,主要快速反映出程序的设计结构,类与类之间的依赖关系等,所以这个技能还是需要掌握的。以后自己也要多画一些,这样熟能生巧,便于掌握。什么是UMLUnified Mo...
  • bskfnvjtlyzmv867
  • bskfnvjtlyzmv867
  • 2017年06月23日 05:07
  • 419

GOF设计模式-建造者模式(builder)

建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Dirextor: 指挥者类,用于统一组装流程 Builder:抽象Builder类,规范产品的...
  • mzh1992
  • mzh1992
  • 2017年02月16日 13:39
  • 110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为UML争吵没有意思,还是把基础打好,看"学习GoF设计模式的重要性"!
举报原因:
原因补充:

(最多只允许输入30个字)