`

学习设计模式的重要性

阅读更多
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等属于一种框架软件,什么是框架软件?它不同于我们以前接触的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的设计模式。虽然它是隐性,但不是可以越过的。

在著名的EJB领域顶尖的专家Richard Monson-Haefel的个人网站:www.EJBNow.com中Richard极力推荐的几本书中就有GoF的《设计模式》,原文如下:

Design Patterns Most developers claim to experience an epiphany reading this book. If you've never read the Design Patterns book then you have suffered a very serious gap in your programming education that should be remedied immediately.

翻译: 很多程序员在读完这本书,宣布自己相当于经历了一次"主显节"(纪念那稣降生和受洗的双重节日),如果你从来没有读过这本书,你会在你的程序教育生涯里存在一个严重裂沟,所以你应该立即挽救弥补!


分享到:
评论
4 楼 javazhou 2008-12-31  
java与模式 这本麽样啊
3 楼 小溪奔流 2007-04-18  
真希望自己能有空多学点这方面的知识。
2 楼 gurudk 2007-04-05  
补:当然是写了大量程序才学会的,否则看10遍估计也没用
1 楼 gurudk 2007-04-05  
这本书我读了5遍也只能熟练应用不到十个模式

相关推荐

    论设计模式的重要性-《重学设计模式》

    那么我们为什么还要学习设计模式? 一方面,设计模式教我们如何使用面向对象设计的原则解决各种问题; 另一方面,设计模式定义了一种通用语言(跟框架一样,统一一个标准),让大家在做系统设计的时候,能更有效...

    设计模式资料汇总

    此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    然而学习设计模式的过程却是痛苦的,从阅读设计模式的圣经——GoF的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、茫无头绪,到有一天突然有一种顿悟;自己去实现GoF的23中模式时候的知其然不知其所以然,...

    《HeadFirst设计模式》学习伴侣

    更重要的是,你在学习设计模式的过程中不会感到昏昏欲睡。如果你曾经读过任何一本Head First系列书籍,就知道你能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地工作。本书的编写运用了许多最新的研究,...

    Head First 设计模式(高清中文完整版带目录+附书源码+HeadFirst设计模式学习伴侣.rar).7z.002(2-2)

     更重要的是,你想在学习设计模式的过程中,不感觉到昏昏欲睡。如果你曾经读过任何一本深入浅出(Head First)系列书籍, 你就会知道能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地运作。本书的编写...

    设计模式解析(第二版)

    本书以作者多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成,首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性。随后,使用易懂的示例代码阐明了许多...

    论文研究-应用机器学习方法的设计模式挖掘研究.pdf

    从源码中挖掘设计模式实例具有重要意义,它能够提升软件系统的可理解性和可维护性。基于机器学习方法,提出了一个设计模式挖掘方法。其中,使用类关系图表示软件系统和设计模式,采用子图匹配的方法从软件系统中提取...

    设计模式 GOF 23

    模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,Christopher Alexander和他的同事们可能最先将模式语言(pattern language)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面向对象软件界。...

    C#设计模式(PDF)

    本书全面讲解设计模式知识,通过本书的学习可使读者更清晰的认识到设计模式的重要性。

    设计模式:可复用面向对象软件的基础--详细书签版

     模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,Christopher Alexander和他的同事们可能最先将模式语言(pattern language)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面向对象软件界...

    GoF 23种设计模式解析(附C++实现源码)

    然而学习设计模式的过程却是痛苦的,从 阅读设计模式的圣经——GoF 的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、 茫无头绪,到有一天突然有一种顿悟;自己去实现 GoF 的 23 中模式时候的知其然不知其所 ...

    设计模式精解- GoF 23种设计模式解析附C++实现源码

    然而学习设计模式的过程却是痛苦的,从 阅读设计模式的圣经一一GoF的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、茫无头绪,到有一天突然有一种顿悟;自己去实现GoF的23中模式时候的知其然不知其所以然,...

    深入浅出设计模式英文影印版 Part 1/4

     更重要的是,你想在学习设计模式的过程中,不感觉到昏昏欲睡。如果你曾经读过任何一本深入浅出(Head First)系列书籍,你就会知道能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地运作。本书的编写运用...

    设计模式解析(第二版).part2

    首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性,随后使用易懂的示例代码阐明了12个最常用的模式,包括它们的基础概念、优点、权衡取舍、实现技术以及需要避免的缺陷,使读者能够理解...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    《java设计模式(第2版)》适合各个层次的java开发人员与设计人员阅读,也可以作为学习java与设计模式的参考读物或教材。 目录: 第1章 绪论 1 第2章 接口型模式介绍 8 第3章 适配器(adapter)模式 13 第4章 外观(facade...

    Head First 设计模式(高清中文完整版带目录+附书源码+HeadFirst设计模式学习伴侣.rar).7z.001(2-1)

     更重要的是,你想在学习设计模式的过程中,不感觉到昏昏欲睡。如果你曾经读过任何一本深入浅出(Head First)系列书籍, 你就会知道能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地运作。本书的编写...

    后端-设计模式-java-精讲

    2. **软件开发者**:对于正在从事软件开发工作的开发者来说,设计模式是提高代码质量、可维护性和可扩展性的重要工具。本书可以帮助他们更深入地理解设计模式的原理和应用,从而更好地应用到实际项目中。 3. **架构...

    Java设计模式.pdf

    第1章设计模式简介 1.1什么是设计模式 1.2设计模式的起源 1.3 “23个设计模式”的来源 1.4学习设计模式的重要性 1.5合理使用模式 1.6什么是框架。。。

    设计模式解析-英文

    设计模式解析(第2版)》以作者自身学习、使用模式和多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成。首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性,...

    设计模式解析(第二版).中文版.PDF格式 (2/2)

    本书以作者多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成,首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性。随后,使用易懂的示例代码阐明了许多...

Global site tag (gtag.js) - Google Analytics