打字猴:1.700454165e+09
1700454165 设计模式之禅 [:1700453894]
1700454166 设计模式之禅 前言
1700454167
1700454168 终于可以写前言了,这说明本书已经基本完成,可以长嘘一口气了。
1700454169
1700454170
1700454171
1700454172
1700454173 设计模式之禅 [:1700453895]
1700454174 设计模式之禅 为什么写这本书
1700454175
1700454176 今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作9年了,总觉得这9年不应该就这么荒废了,应该给自己这9年的工作写一个总结,总结的初稿就是这本书。
1700454177
1700454178 在谈为什么写这本书之前,先抖抖自己这9年的职业生涯吧。大学时我是学习机械的,当时计算机刚刚热起来,自己也喜欢玩一些新奇的东西,记得最清楚的是用VB写了一个自由落体的小程序,模拟小球从桌面掉到地板上,然后计算反弹趋势,很有成就感。于是2000年毕业时,我削尖了脑袋进入了IT行业,成为了一名真正的IT男,干着起得比鸡早、睡得比鸡晚的程序员工作,IT男的辛酸有谁知晓!
1700454179
1700454180 坦白地说,我的性格比较沉闷,属于典型的程序员型闷骚,比较适合做技术研究。在这9年里,项目管理做过,系统分析做过,小兵当过,团队领导人也当过,但至今还是一个做技术的。要总结这9年技术生涯,总得写点什么吧,最好是还能对其他人有点儿用的。那写什么好呢?Spring、Struts等工具框架类的书太多太多,很难再写出花样来,经过一番思考,最后选择了一个每一位技术人员都需要掌握的、但普及程度还不是非常高的、又稍微有点难度的主题——设计模式(Design Pattern,DP)。
1700454181
1700454182 中国人有不破不立的思维,远的如秦始皇焚书坑儒、项羽火烧阿房宫,近的如破“四旧”。正是由于有了这样的思想,于是乎能改的就改,不能改的就推翻重写,没有一个持续开发蓝图。为什么要破才能立呢?为什么不能持续地发展?你说这是谁的错呢?是你架构师的错,你不能持续地拥抱变化,这是一个系统最失败的地方。那怎么才能实现拥抱变化的理想呢?设计模式!
1700454183
1700454184 设计模式是什么?它是一套理论,由软件界的先辈们(The Gang of Four:包括Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。做软件的人都知道需求是最难把握的,我们可以分析现有的需求,预测可能发生的变更,但是我们不能控制需求的变更。问题来了,既然需求的变更是不可控的,那如何拥抱变化呢?幸运的是,设计模式给了我们指导,专家们首先提出了6大设计原则,但这6大设计原则仅仅是一系列“口号”,真正付诸实施还需要有详尽的指导方法,于是23种设计模式出现了。
1700454185
1700454186 设计模式已经诞生15年了,在这15年里出版了很多关于它的经典著作,相信大家都能如数家珍。尽管有这么多书,工作5年了还不知道什么是策略模式、状态模式、责任链模式的程序员大有人在。不信?你找个机会去“虚心”地请教一下你的同事,看看他对设计模式有多少了解。不要告诉我要翻书才明白!设计模式不是工具,它是软件开发的哲学,它能指导你如何去设计一个优秀的架构、编写一段健壮的代码、解决一个复杂的需求。
1700454187
1700454188 因为它是软件行业的经验总结,因此它具有更广泛的适应性,不管你使用什么编程语言,不管你遇到什么业务类型,设计模式都可以自由地“侵入”。
1700454189
1700454190 因为它不是工具,所以它没有一个可以具体测量的标尺,完全以你自己的理解为准,你认为自己多了解它,你就有可能产生多少的优秀代码和设计。
1700454191
1700454192 因为它是指导思想,你可以在此基础上自由发挥,甚至是自己设计出一套设计模式。
1700454193
1700454194 世界上最难的事有两件:一是让人心甘情愿地把钱掏出来给你,二是把自己的思想灌输到别人的脑子里。设计模式就属于第二种,它不是一种具体的技术,不像Struts、Spring、Hibernate等框架。一个工具用久了可以熟能生巧,就像砌墙的工人一样,长年累月地砌墙,他也知道如何把墙砌整齐,如何多快好省地干活,这是一个人的本能。我们把Struts用得很溜,把Spring用得很顺手,这非常好,但这只是一个合格的程序员应该具备的基本能力!于是我们被冠以代码工人(Code Worker)——软件行业的体力劳动者。
1700454195
1700454196 如果你通晓了这23种设计模式就不同了,你可以站在一个更高的层次去赏析程序代码、软件设计、架构,完成从代码工人到架构师的蜕变。注意,我说的是“通晓”,别告诉我你把23种设计模式的含义、适应性、优缺点都搞清楚了就是通晓。错了!没有工作经验的积累是不可能真正理解设计模式的,这就像大家小时候一直不明白为什么爸爸妈妈要工作而不能每天陪自己玩一样。
1700454197
1700454198 据说有的大学已经开了设计模式这门课,如果仅仅是几堂课,让学生对设计模式有一个初步的了解,我觉得并无不妥,但如果是专门的一门课程,我建议取消它!因为对一个尚无项目开发经验的学生来说,理解设计模式不是一般困难,而是非常非常困难!之前没有任何的实战经验,之后也没有可以立即付诸实践的场景,这样能理解设计模式吗?
1700454199
1700454200 在编写本书之前,23种设计模式我都用过,而且还算比较熟练,但是当真正要写到书中时,感觉心里没谱儿了。这个定义是这样的吗?是需要用抽象类还是应该用接口?为什么在这里不能抽取抽象呢?为什么在实际项目中这个模式要如此蜕化?这类小问题有时候很纠结,需要花费大量的精力和时间去分析和确认。所以,在写作的过程中我有过很多忧虑,担心书中会有太多瑕疵,这种忧虑现在仍然存在。遇到挫折的时候也气馁过,但是我坚信一句话:“开弓没有回头箭,回头即是空”,既然已经开始,就一定要圆满完成。
1700454201
1700454202
1700454203
1700454204
1700454205 设计模式之禅 [:1700453896]
1700454206 设计模式之禅 本书的特色
1700454207
1700454208 简单、通俗、易懂,但又不肤浅,这是本书的最大特色。自己看过的技术书还算比较多,很痛恨那种大块头的巨著,搁家里当枕头都觉得太硬。如果要是再晦涩难懂点,那根本没法看,看起来实在是太累。设计模式原本就是理论性的知识,讲解的难度比较大,但我相信这本书能够把你对设计模式的恐惧一扫而光。不信?挑几页先看看!
1700454209
1700454210 我的理念是:像看小说一样阅读本书。我尽量用浅显通俗的语言讲解,尽量让你有继续看下去的欲望,尽量努力让你有兴趣进入设计模式的世界,兴趣是第一老师嘛!虽然我尽量让这本书浅显、通俗、易懂,但并不代表我的讲解就很肤浅。每个设计模式讲解完毕之后,我都附加了两个非常精华的部分:设计模式扩展和最佳实践,这是俺压箱底的技能了,为了博君一看,没招了,抖出来吧!尤为值得一提的是,本书还有设计模式PK和混编设计模式两部分内容教你如何自如地去运用这些设计模式,这是当前所有设计模式类的图书都不具备的,连最权威的那本书也不例外。
1700454211
1700454212 我很讨厌技术文章中夹杂着的那些晦涩难懂的文字,特别是一堆又一堆的名词堆砌,让人看着就反胃。但是为了学习技术,为了生存,还是必须看下去。国内的技术文档,基本上都是板着一副冷面孔讲技术,为什么要把技术弄得这么生硬呢?技术也有它幽默、柔情的一面,只是被我们的“孔夫子们”掩盖了,能用萝卜、白菜这种寻常人都熟悉的知识来讲解原子弹理论的人,那是牛人,我佩服这样的人。记住,用一堆名词把你忽悠晕的人很可能什么都不懂!
1700454213
1700454214 本书想告诉你的是,技术也可以很有乐趣,也可以让你不用皱着眉头思考,等待你的只是静静地看,慢慢地思考,本书的内容会润物细无声地融入你的思维中。
[ 上一页 ]  [ :1.700454165e+09 ]  [ 下一页 ]