您的位置:首页 > 理论基础 > 数据结构算法

重构 - 理解设计模式的捷径(1 引言)

2009-11-21 01:07 267 查看

第1章 引言

       著名的EJB领域顶尖的专家Richard Monson-Haefel在其个人网站:www.EJBNow.com中极力推荐的GoF的《设计模式》,原文如下:
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.
翻译过来的大意就是:很多程序员在读完这本书,宣布自己相当于经历了一次“主显节”(纪念那稣降生和受洗的双重节日),如果你从来没有读过这本书,你会在你的程序教育生涯里存在一个严重裂沟,所以你应该立即挽救弥补!
算是作为论文的引子吧。这段话事实上估计很多人都看过了。虽然语言描述上比较夸张,但的确道出了设计模式之于软件设计的重要性。各个时代的程序设计都有其特定的设计模式。在30多年前的面向过程的程序设计的年代,有许多经典的定义,比如“程序 = 算法 + 数据结构” ,也有许多经典的思想,比如 “自顶向下,逐步求精” 。这些已经足够把那个时代程序设计的基本模式诠释出来了,那就是 “模块化” 。随后 “面向对象” 出现了,一下子铺天盖地都是 “OO(Object-Oriented)” ,OOP(Object-Oriented Programming),OOD(Object-Oriented Design),OOA(Object-Oriented Analysis),等等。然后具有划时代意义的 “Gof设计模式” 出现了。按照作者的说法,他们并没有创造出什么新的东西,他们只不过从人类建筑学中受到启发,把前人所创造出来的设计经验以及现有的软件设计方式作个归纳和总结而已。只能说Gof太谦虚了,他们的“重构”能力正如他们在那本书中所展示的23种设计模式所体现的东西一样博大精深。
笔者认为,直到Gof设计模式的出现,面向对象的内容才真正和它那华丽的形式达成了统一。或者说,至少提供给了想学习面向对象思想的程序员们一个可以在实质上接触面向对象精神的途径。因为在这之前,“面向对象” 太多地停留在概念和炒作上面,在实际的软件设计和应用中,它未必发挥它所宣传的那种效果,大多数的软件设计依然是用的面向过程的设计方式。Gof设计模式是在真正意义上利用面向对象的设计原则和思想来重构软件系统,它提供了一种具体的而不是空洞的解决方案。它不再仅仅停留在抽象、封装、继承、多态这些纯粹的OO概念之上,而是以面向对象的设计原则,比如 “封装变化” ,“多用组合,少用继承” ,“针对接口编程” 等,深入地讨论了具体的23种充分体现了OO思想的设计模式。所以难怪Richard Monson-Haefel会对GOF设计模式有这么高的评价。而今,J2EE的框架盛行,按照精通J2EE的专业人士的说法,它正是利用设计模式的精髓而创造出来的精品。
关于设计模式,笔者在大三期间就曾经自学过,不过当时对于它的认识也仅仅是停留在概念上而已,没有在实际的程序中运用过。而今研究生的课程碰巧也有这门课,于是重新学习了一下。和大学期间不同,这次笔者只是挑了几个设计模式来重点学习,并尝试着利用它们来重构大学期间所做过的一款小游戏(实际上严格来说只是小型键盘操纵程序,算不得游戏)。两个星期下来,收获颇多,对于设计模式的认识也不再仅仅是停留在概念上面而已了。这也为更加深入地学习设计模式打下了基础。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息