大话设计模式

出版时间:2007-12  出版社:清华大学出版社  作者:程杰  页数:368  
Tag标签:无  

前言

本书是一本程序集?NO。本书是一本故事集?NO。本书是一本通过故事讲述程序如何设计的方法集。本书是给连Hello World都没写过的非程序员看的书吗?NO。本书是给玩过穿孔纸带(0/1)、写过汇编、BASIC、C、C++、Delphi、Java、C#等语言,开发过覆盖全球、使用人数过亿、数百万行代码等大型系统的骨灰级程序员看的书吗?NO。本书希望能给渴望了解OO世界的初学者、困惑于僵硬、脆弱、无法复用的代码编程体验者、一直打着OO编程的旗号,做着过程式开发的基于对象的编程实践者一些好的建议和提示。本书起因写本书源于我一次做培训的经历,学生大多是计算机专业的学生或有过一定经验的在职开发者。他们都知道类、方法、构造方法、甚至抽象类、接口等概念,并用 Visual Studio写过不少的Windows或Web程序,可是当我提问为什么要用面向对象,它的好处在哪里时,却没有人能完整地讲得出来,多数人的反应是,概念知道的,就是表达不清楚。针对于此,我就举了中国古代的四大发明中活字印刷的例子(见第1章),通过一个虚构的三国曹操做诗的情景,把面向对象的几大好处讲解了一下,学生普遍都感觉通俗易懂,觉得这样的教学比直接告诉面向对象有什么好处要更加容易理解和记忆。这就使得我不断地思考这样一个问题,学一门技术是否需要趣味性、通俗性的引导。我在思考中发现,看小说时,一般情况下我都可以完整地读完它,而阅读技术方面的图书,却很少有真正的每章每页的仔细阅读。尽管这两者是有很大区别,技术书中可能有不少知识是已经学会或暂时用不上的内容,但也不得不承认,小说之所以可以坚持读完是因为对它感兴趣,作者的文字吸引你。而有些技术书的枯燥乏味使得阅读产生了困难,通常读个前几章就留待以后再说了。技术课的教学同样如此,除非学生是抱着极大的学习动机来参与其中,否则照本宣科的教学、枯燥乏味的讲解,学生一定会被庞杂的概念和复杂的逻辑搅晕了头脑,致使效果大打折扣。也正因为此,往往造成部分学生,学了四年的计算机编程,却可能连面向对象有什么好处都还说不清。为什么不可以让技术书带点趣味性呢,哪怕这些趣味性与所讲的技术并不十分贴切,只要不是影响技术核心的本质,不产生重大的错误,让读者能轻松阅读它,并且有了一定的了解和感悟,这要比一本书写得高深无比,却被长期束之高阁要好得多。也正是这个原因,本人开始了关于设计模式的趣味性写作的尝试。本书读者显然本书不是给无任何编程经验的人看的,对于想入这一行的朋友来说,找一门编程语言,从头开始或许才是正道。而本书也不太适合有了多年面向对象开发经验,对常用的设计模式了如指掌的人看的。毕竟这里更多的是一些基础性的东西。我时常拿程序员的成长与足球运动员的成长做对比。GoF 的《设计模式》好比是世界顶级足球射门集锦,《重构》、《敏捷软件开发》、《设计模式解析》好比是一场场最精彩的足球比赛。我为之疯狂,为之着迷。可是我并不只是想做一个球迷(软件使用者),而是更希望自己能成为一个足球运动员(软件设计编程者),能够亲自上场比赛,并且最终能成为球星(软件架构师)。我仔细地阅读这些被誉为经典的著作,认真地实践其中代码,但是我总是半途而废、坚持不下去,我痛恨自己意志力的薄弱、憎恶自己无端地放弃,难道我真的就是那么的笨?痛定思痛,反思悔过。我终于发现,贝利、马拉多纳不管老、胖是用来敬仰的,贝克汉姆、罗纳尔迪尼奥不管美、丑是用来欣赏的,但他们的球技……嗨,客气地说,是不容易学会的,客观地说,是不可能学得会的。为什么会这样?原来,我学习中缺了一个很重要的环节,我们在看到了精彩的球赛,欣赏球星高超球技的同时,却忽略了球星的成长过程。他们尽管有一定天分,但却也是从最底层通过努力一点一点慢慢显露出来的,我们需要的不仅仅是世界杯上的那定乾坤的一脚,更需要这一脚之前是如何练出那种神奇的方法,对于程序员来讲,精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。本书显然不是培养足球明星(软件架构师)的俱乐部,而是训练足球基本功的学校,培训的是初学足球的小球员(面向对象的程序员),本书希望的是读者阅读后可以打好面向对象的基础,从而更加容易并深入的去理解和感受GoF的《设计模式》以及其他大师作品的魅力。本书定位本书是在学习众多大师智慧结晶的图书作品、分享了网上多位朋友的实践经验的基础上,加之自己的编程感受写出来的。正如牛顿有句名言:“如果说我比别人看得更远些,那是因为我站在了巨人的肩上。”但显然,本书并没有创造或发现什么模式,因此谈不上站在巨人肩膀上看得更远。所以作者更希望本书能成为一些准备攀登面向对象编程高峰的朋友的登山引路人、提携者,在您登山途中迷路时给予指引,在您峭壁攀岩摔跤时给予保护。本书特色本书有两个特色,第一特色是重视过程。看了太多的计算机编程类的图书,大多数书籍都是集中在讲授优秀的解决方案或者一个完美的程序样例,但对这些解决方案和程序的演变过程却重视不够,好书之所以好,就是因为作者可以站在学习者的角度去讲解问题所在,让学习门槛降低。《重构与模式》中有一句经典之语:“如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中蕴藏着大智慧。”本人就希望能通过小菜与大鸟的对话,在不断地提问与回答过程中,在程序的不断重构演变中,把设计模式的学习门槛降低,让初学者可以更加容易地理解,为什么这样设计才是好,是如何想到这样设计的。本书的第二个特色就是贴近生活。尽管编程是严谨的,不容大话和戏说。但生活却是多姿多彩的,而设计模式也不是完全孤立于现实世界而凭空想出来的理论。事实上所有的模式都可以在生活中找到对应。因此,通过主人公小菜和大鸟的对话,将求职、面试、工作、交友、投资、兼职、办公室文化、生活百味等等非常接近程序员生活原貌的场景写到了书中,用一个个小故事来引出模式,会让读者相对轻松地进入学习设计模式的状态。当然,此举的最大目的还是为了深入浅出,而非纯粹噱头。本书内容本书通篇都是以情景对话的形式,用一个又一个的小故事或编程示例来组织的。共分为四个部分。第一部分是面向对象的意义和好处以及几个重要的设计原则,通过小菜面试的失败引出;第二部分是详细讲解23个设计模式;第三部分是对设计模式的总结,利用小菜梦到的超级模式大赛的场景,把所有的面向对象和模式概念都拟人化来趣味性的总结设计模式之间的异同和关键点。第四部分是附录,主要是针对对面向对象不熟悉读者的一个补充,通过一个例子的演变介绍了类、封装、继承、多态、接口、事件等概念。本书人物及背景小菜:原名蔡遥,22岁,上海人,上海某大学计算机专业大学四年级学生,成绩一般,考研刚结束,即将毕业,正求职找工作。大鸟:原名李大辽,29岁,小菜的表哥,云南昆明人,毕业后长期从事软件开发和管理工作,近期到上海发展,借住小菜家在宝山的空套房内。小菜以向大鸟学习为由,也从市区父母家搬到宝山与大鸟同住。本书研读方法本书建议按顺序阅读,如果您感觉由于面向对象知识的匮乏,例如对继承、多态、接口、抽象类的理解不足,造成阅读上的困难,不妨先阅读附录一的“培训实习生——面向对象基础”部分,然后再从第1章开始阅读。如果您已经对不少设计模式熟悉,也不妨挑选不熟悉的模式章节阅读。尽管本书中的代码都提供下载,但不经过读者的自己手动输入过程,其实阅读的效果是大打折扣的。强烈建议读者根据样例自己写程序,只有在运行出错,达不到预期效果时再查看本书提供的源程序,这样或许才是最好的学习方法。有问题可及时与我联系。我的电子邮箱是chengjielong@163.com,博客是 http://cj723.cnblogs.com/。本书中的很多精华都来自许多大师作品,建议读者通过笔记形式记录,这将有助于您的记忆和理解设计模式,增强最终的读书效果。本书中出现的“[ ]”是表示句子摘自某书。例如,“策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户[DP]。”其中“[DP]”表示此名摘自《设计模式:可复用面向对象软件的基础》,详细摘要说明请参看附录二。本书中29章中的虚拟人物姓名都是软件编程中的专业术语,因此凡是专业术语被指向人物姓名的都用斜体字表示,以和实际术语区分。例如,“第一位是我们OOTV创始人,面向对象先生”,这里的斜体字面向对象指人名。关于本书学习的疑问解答看本书需要什么基础?主要是C#或其他编程语言的基础知识,如变量、分支判断、循环、函数等编程基础,关于面向对象基础可参看本书的附录一。设计模式是否有必要全部学一遍?答案是,Yes!别被那些说什么设计模式大多用不上,根本不用全学的舆论所左右。尽管现在设计模式远远不止23种,对所有都有研究是不太容易的,但就像作者本人一样,在学习GoF总结的23个设计模式过程中,你会被那些编程大师们进行伟大的技术思想洗礼,不断增加自己对面向对象的深入理解,从而更好的把这种思想发扬光大。这就如同高中时学立体几何感觉没用,但当你装修好房子购买家俱时才知道,有空间感,懂得空间计算是如何的重要,你完全可能遇到买了一个大号的冰箱却放不进厨房,或买了开关门的衣橱(移门不占空间)却因床在旁边堵住了门而打不开的尴尬。重要的不是你将来会不会用到这些模式,而是通过这些模式让你找到“封装变化”、“对象间松散耦合”、“针对接口编程”的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。成为诗人后可能不需要刻意地按照某种模式去创作,但成为诗人前他们一定是认真地研究过成百上千的唐诗宋词、古今名句。如果说,数学是思维的体操,那设计模式,就是面向对象编程思维的体操。我学了设计模式后时常会过度设计,如何办?作者建议,暂时现象,继续努力。设计模式有四境界:1.没学前是一点不懂,根本想不到用设计模式,设计的代码很糟糕;2.学了几个模式后,很开心,于是到处想着要用自己学过的模式,于是时常造成误用模式而不 自知;3.学完全部模式时,感觉诸多模式极其相似,无法分清模式之间的差异,有困惑,但深知误用之害,应用之时有所犹豫;4.灵活应用模式,甚至不应用具体的某种模式也能设计出非常优秀的代码,以达到无剑胜有剑的境界。从作者本人的观点来说,不会用设计模式的人要远远超过过度使用设计模式的人,从这个角度讲,因为怕过度设计而不用设计模式显然是因噎废食。当你认识到自己有过度使用模式的时候,那就证明你已意识到问题的存在,只有通过不断的钻研和努力,你才能突破“不识庐山真面目,只缘身在此山中”的瓶颈,达到“会当凌绝顶,一览众山小”的境界。编程语言的差异本书讲的是面向对象设计模式,是用.NET中的C#语言编写,但本书并不是主要讲解C#语言或.NET框架的图书,因此本书同样适合Java、VB.NET、C++等其他一些面向对象语言的读者阅读来学习设计模式。就Java而言,主要差异来自C#对于子类继承父类或实现接口用的都是“:”,而Java中两者是有区别的。当Cat继承抽象类Animal时,Java语法是public class Cat extends Animal当Superman实现接口IFly时,Java语法是public class Superman implements IFly然后Java中所有的方法都是虚拟的,因此不用指定new或是override修饰符。还有一些其他差异,但基本都不影响本书的阅读。对于VB.NET的程序员,如果阅读困难,不妨去网上查找关于转换C#与VB.Net语言的工具,比如http://www.kamalpatel.net/ConvertCSharp2VB.aspx,将下载本书的源代码转换后再进行阅读。C++的程序员,可能在语言上会有些差异,不过本书应该不会因为语言造成对面向对象思想的误读。不是一个人在战斗首先要感谢我的妻子李秀芳对我写作本书期间的全力支持,没有她的理解和鼓励,就不可能有本书的出版。而我们的宝宝也将在2008年初出生,希望等宝宝懂事后能知道,在宝宝的母亲怀胎过程中,宝宝的父亲也在为书的诞生而努力。也希望本书成为赠送给他或者她的最好的礼物。父母的养育才有作者本人的今天,本书的出版,寻根溯源,也是父母用心教育的结果。养育之恩,没齿难忘。本书起源于本人在“博客园”网站的博客http://cj723.cnblogs.com/中的一个连载文章《小菜编程成长记》。没想到连载引起了不小的反应,网友们普遍认为本人的这种技术写作方式新颖、有趣、喜欢看。正是因为众多网友的支持,本人有了要把GoF的23种设计模式全部成文的冲动。非常感谢这些在博客回复中鼓励我的朋友。这里需要特别提及洪立人先生,他是本人在写书期间共同为理想奋斗的战友,写作也得到了他的大力支持和帮助,我写作的不少妙句也来自我们俩共同合作的网站http://www.miaoju.net。在此对两位表示衷心的感谢。写作过程中,本人参考了许多国内外大师的设计模式的著作。尤其是《设计模式》(作者:简称GoF的Erich Gamm,Richard Helm,Ralph Johnson,John Vlissides)、《设计模式解析》(作者:Alan Shalloway,James R. Trott)、《敏捷软件开发:原则、模式与实践》(作者:Robert C.Martin)、《重构——改善既有代码的设计》(作者:Martin Fowler)、《重构与模式》(作者:Joshua Kerievsky)、《Java与模式》(作者:阎宏等等,没有他们的贡献,就没有本书的出版。也希望本书能成为更好阅读他们这些大师作品的前期读物。写作过程中,本人还参考了http://www.dofactory.com/ 关于23个设计模式的讲解,并引用了他们的结构图和基本代码。在博客园中的许多朋友,比如张逸、吕震宇、李会军、idior、Allen Lee的博文,MSDN SmartCast中李建忠的讲座,CSDN博客中的大卫、ai92的博文,网站J道www.jdon.com 的版主banq的文章都给本人的写作提供了非常大的指引和帮助,在此表示感谢。另外博客园的双鱼座先生还对本人的部分代码提出了整改意见,也表示衷心的谢意。详细参考资料与网站链接,见附录二。事实上,由于本人长期有看书记读书笔记的习惯,所以书中引用笔记的内容,也极有可能是来自某本书或者某个朋友的博客、某个网站的文章。而本人已经无法一一说出其引用的地址,但这些作者的智慧同样对本书的写作带来了帮助,在此只能说声谢谢。最后,对本书的责任编辑陈冰先生及清华大学出版社的相关工作人员,表示由衷的感谢。本书的出版离不开陈先生的指导和其他工作人员的辛勤工作。程 杰2007年7月序这本书最初起源于作者程杰在其博客中所写的连载文章——《小菜编程成长记》。随着文章的一篇篇发布,这些文章新颖的表现形式和独特的风格受到了众多读者的关注和喜爱,很多人在博客中留下了评语。有些虽然只有短短的一句话,但也可以看出是对作者由衷的感谢。作为本书的策划编辑,最初我也是在博客园中浏览博文时阅读到这些文章的,我的直觉和网友们热情洋溢的评语告诉我,这些文章有作为一部书出版的价值,于是我就联系了程杰。几个月后,我拿到了这部书的初稿。初审后,我发现书稿中存在一些问题。比如,当时书稿中还没有对UML类图进行讲解的内容,这会导致初学者学习后面的内容时感到理解困难,于是我请作者在第1 章中增加了UML类图这一节,这是简洁却精彩的一节;另外,当时作者为了便于表达某些举例的含义,有相当数量的代码都是用中文编写的,虽然中文代码看似易懂,但却会令绝大多数早已熟悉了英文代码的程序员们感到困惑和难以阅读,所以我请作者把代码改回为程序员们所熟悉的英文代码,并同时添加了更详细的中文注释。经过几番认真和辛苦的修改与调整,现在,这本书在你的手中了。对于这本书,我想说的是,其中的很多篇章非常的精彩,会令你禁不住叫好,但也有一些篇章会显得有些拖沓,或者是有些牵强,然而,随着你读过那些精彩的段落,读过那些不那么精彩的段落,最终,你会读到书的最后一页(很多书不能使你做到这一点),当你读完全书时,你会发现,你的心情很愉快,很平静,即使是那些当时看起来不那么精彩的段落,现在也都成为了这温馨故事的一部分。你会记得书中那个好学、天真、而又执著的小菜,也会记得那个善于启发,经验老道的大鸟。下面这些是来自作者博客的网友评论,看完这些热情洋溢的评论,就和作者一起,进入设计模式的大话境界吧。本书策划编辑 陈冰2007年10月18日网友评论daigua:看到这篇精彩的成长记,我连饭都不想吃了,什么事都不想做,就想把它看完。写得太好了!是啊,现在很多教材都太枯燥了,不好理解。其实书的意义就在于让人学到知识,而不在于用什么方式,为什么一定要那么教条呢,只要能让人比较容易地学到书里的知识就是一本好书。谢谢你啊,给了我很大的信心。我现在很有信心把编程进行到底,哈哈。光头小松鼠:绝对经典!一篇小故事,把程序的灵活性、可扩展性、可维护、可复用等说得怎一个妙字了得!沉默天蝎:感激,让我这个菜鸟顿悟。这样的写法太好了,如果老大你出书,我肯定购买!碳碳:这种学习的方式真的很神奇,尽管每个人都能想到,但不是每个人都能做到。或许可以把系列文章归档出书,说不定会收到追捧,呵呵。Bryant:真的是太棒了!我原来看过一些有关设计模式的书,都觉得太抽象,根本就不能理解,也不知道啥时候能用上。看过你写的这些文章,才知道了应该怎样在实际中运用这些模式,而且文笔非常的幽默,享受!Thx ^_^ 支持!有个建议,最好慢慢地把所有的设计模式都聊聊!Bryant:不错,楼主说的非常幽默,通俗,把我们一步一步带入面向对象的世界 thx ^_^Bryant:太棒了,我正是这样初学设计模式的小菜,需要这样的文章,谢谢楼主!菜鸟飞:楼主,加油,支持你。在这里献上崇高的敬意,不管你有没有感受到我挚热的目光。请你相信,有这样一些人一直在默默地关注着你,期待着你。wdx2008:非常好!!!幽默,搞笑,易懂,真神人也,鬼神不可测!支持楼主!!空明流转:呵呵,楼主说得蛮好。国外的文章好就好在有例子,“废话”多,所以比较好理解。至于行文风格嘛,这个倒是因人而异的。我个人就偏向于论文式的行文风格,逻辑严密,层层递进,阐述也很清晰。就有点像有序数组,二分法就能轻松查找到自己想要的东西,但国内的那种论文式的文章,呵呵,我看是卖弄的成分居多,实作的成分偏少,所以才那么难读的吧。Char:现在的大学就缺少这种既通俗易懂,又有内容的东西。Apple:不错,学习了。希望博主能再接再厉多写点,看了很多书都没有看你的文章明白得快。SnowDoggie:呵呵,挺好的。其实要想找个绝对没有漏洞的例子是很辛苦的,关键在于文章本身能说明问题,能体现作者的意图就足够了。昨天和朋友一起爬山的时候还讨论了你的文章风格,其实最有用的还是你这种寓教于乐,步步深入的风格,阳春白雪的经典虽然是经典,大众却不见得喜欢。Jerry:不错的文章,简单明了,又不乏趣味,好的文章就得顶下。izhizhe2000:很好,整个系列写完之后可以出书了,保证受大学生的广泛欢迎!mekong:很是欣赏这样幽默风趣又不失睿智深刻的文字。Wuyisky:呵呵,楼主不仅程序写得好,而且还有文学天赋。佩服!Jack:真正的高手是用最生动的语言,最简单的例子,这才是真正的“深入浅出”。赞!!!老兄,加油,继续哟。BoyLee:人才,爱死你了。做了一年外包,没技术含量。正打算从头学习这些东西,这样的方式我最喜欢了。Leoxu:很不错,对正在找工作的我有很大的帮助。以后会多来光顾。Ame:写得承上启下,始终有一主干线贯穿,作者的文字功底很强啊!Artech:我很喜欢你的写作风格!以一种调侃的方式讲明一个深奥的问题。我一直在尝试如何以一种让每个人都懂得的语言来向大家分享我所理解的.NET。你给了我一个启发。8:醍醐灌顶!感谢,领悟了不少东西!!!Yufengly:真是太容易理解了,而且看后印象深刻,继续努力!期待下文……支持作者!Sopper:支持,例子举得很形象,写得很棒,以后会常来关注。d:会技术的高人有很多,但能把技术讲得如此通俗易懂的高人并不多,你是一个,谢谢~~~white.wu:非常喜欢您这种授人以“渔”的文章。Answer:强啊,本菜鸟受益很大,谢谢。Hanlei:强,很受益啊,感谢楼主,写出这么好的文章来。金色海洋(jyk):继续呀,我们期待中……,写得很好,一看就懂。DSharp:看博客园这么久了,终于看到一篇有中国特色的好文。

内容概要

本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的经典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结。附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。本书的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解——为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以“鱼”,还授之以“渔”的目的。引导读者体会设计演变过程中蕴藏的大智慧。  本书适合编程初学者或希望在面向对象编程上有所提高的开发人员阅读。

作者简介

程杰,高级软件工程师&高级培训讲师。从事软件开发一线工作近八年时间。曾在申银万国证券公司、上海杨浦区政府、朝华集团下属网游公司、香港晨兴集团等多行业项目开发中担任主程及项目负责人,有丰富的大中型软件开发经验,以及多年的软件设计与项目管理经验。曾任加拿大慧

书籍目录

第1章  代码无错就是优?——简单工厂模式     1.1  面试受挫     1.2  初学者代码毛病     1.3  代码规范     1.4  面向对象编程     1.5  活字印刷,面向对象     1.6  面向对象的好处     1.7  复制vs.复用     1.8  业务的封装    1.9  紧耦合vs.松耦合     1.10  简单工厂模式     1.11  UML类图    第2章  商场促销——策略模式    2.1  商场收银软件     2.2  增加打折     2.3  简单工厂实现     2.4  策略模式    2.5  策略模式实现     2.6  策略与简单工厂结合     2.7  策略模式解析    第3章  拍摄UFO——单一职责原则     3.1  新手机     3.2  拍摄     3.3  没用的东西     3.4  单一职责原则     3.5  方块游戏的设计     3.6  手机职责过多吗?    第4章  考研求职两不误——开放-封闭原则     4.1  考研失败     4.2  开放-封闭原则     4.3  何时应对变化     4.4  两手准备,并全力以赴    第5章  会修电脑不会修收音机?——依赖倒转原则     5.1  MM请求修电脑     5.2  电话遥控修电脑     5.3  依赖倒转原则     5.4  里氏代换原则     5.5  修收音机    第6章  穿什么有这么重要?——装饰模式     6.1  穿什么有这么重要?     6.2  小菜扮靓第一版     6.3  小菜扮靓第二版     6.4  装饰模式     6.5  小菜扮靓第三版     6.6  装饰模式总结    第7章  为别人做嫁衣——代理模式     7.1  为别人做嫁衣!     7.2  没有代理的代码     7.3  只有代理的代码     7.4  符合实际的代码     7.5  代理模式     7.6  代理模式应用     7.7  秀才让小六代其求婚    第8章  雷锋依然在人间——工厂方法模式     8.1  再现活雷锋     8.2  简单工厂模式实现     8.3  工厂方法模式实现     8.4  简单工厂vs.工厂方法     8.5  雷锋工厂    第9章  简历复印——原型模式     9.1  夸张的简历     9.2  简历代码初步实现     9.3  原型模式     9.4  简历的原型实现     9.5  浅复制与深复制     9.6  简历的深复制实现     9.7  复制简历vs.手写求职信    第10章  考题抄错会做也白搭——模板方法模式     10.1  选择题不会做,蒙呗!     10.2  重复=易错+难改     10.3  提炼代码     10.4  模板方法模式     10.5  模板方法模式特点     10.6  主观题,看你怎么蒙   第11章  无熟人难办事?——迪米特法则     11.1  第一天上班     11.2  无熟人难办事     11.3  迪米特法则    第12章  牛市股票还会亏钱?——外观模式     12.1  牛市股票还会亏钱?     12.2  股民炒股代码     12.3  投资基金代码     12.4  外观模式     12.5  何时使用外观模式    第13章  好菜每回味不同——建造者模式     13.1  炒面没放盐     13.2  建造小人一     13.3  建造小人二     13.4  建造者模式     13.5  建造者模式解析     13.6  建造者模式基本代码    第14章  老板回来,我不知道——观察者模式     14.1  老板回来?我不知道!     14.2  双向耦合的代码     14.3  解耦实践一     14.4  解耦实践二     14.5  观察者模式     14.6  观察者模式特点     14.7  观察者模式的不足     14.8  事件委托实现     14.9  事件委托说明     14.10  石守吉失手机后的委托    第15章  就不能不换DB吗?——抽象工厂模式     15.1  就不能不换DB吗?     15.2  最基本的数据访问程序     15.3  用了工厂方法模式的数据访问程序     15.4  用了抽象工厂模式的数据访问程序     15.5  抽象工厂模式     15.6  抽象工厂模式的优点与缺点     15.7  用简单工厂来改进抽象工厂     15.8  用反射+抽象工厂的数据访问程序     15.9  用反射+配置文件实现数据访问程序     15.10  无痴迷,不成功    第16章  无尽加班何时休——状态模式     16.1  加班,又是加班!     16.2  工作状态-函数版     16.3  工作状态-分类版     16.4  方法过长是坏味道     16.5  状态模式     16.6  状态模式好处与用处     16.7  工作状态-状态模式版    第17章  在NBA我需要翻译——适配器模式     17.1  在NBA我需要翻译!     17.2  适配器模式     17.3  何时使用适配器模式     17.4  篮球翻译适配器     17.5  适配器模式的.NET应用     17.6  扁鹊的医术    第18章  如果再回到从前——备忘录模式     18.1  如果再给我一次机会……     18.2  游戏存进度     18.3  备忘录模式     18.4  备忘录模式基本代码     18.5  游戏进度备忘    第19章  分公司=一部门——组合模式     19.1  分公司不就是一部门吗?     19.2  组合模式     19.3  透明方式与安全方式     19.4  何时使用组合模式     19.5  公司管理系统     19.6  组合模式好处    第20章  想走?可以!先买票——迭代器模式     20.1  乘车买票,不管你是谁!     20.2  迭代器模式     20.3  迭代器实现     20.4  .NET的迭代器实现    20.5  迭代高手    第21章  有些类也需计划生育——单例模式     21.1  类也需要计划生育     21.2  判断对象是否是null     21.3  生还是不生是自己的责任     21.4  单例模式     21.5  多线程时的单例     21.6  双重锁定     21.7  静态初始化    第22章  手机软件何时统一——桥接模式     22.1  凭什么你的游戏我不能玩     22.2  紧耦合的程序演化     22.3  合成/聚合复用原则     22.4  松耦合的程序     22.5  桥接模式     22.6  桥接模式基本代码     22.7  我要开发“好”游戏    第23章  烤羊肉串引来的思考——命令模式     23.1  吃烤羊肉串!     23.2  烧烤摊vs.烧烤店     23.3  紧耦合设计     23.4  松耦合设计     23.5  松耦合后     23.6  命令模式     23.7  命令模式作用    第24章  加薪非要老总批?——职责链模式     24.1  老板,我要加薪!     24.2  加薪代码初步     24.3  职责链模式     24.4  职责链的好处     24.5  加薪代码重构     24.6  加薪成功    第25章  世界需要和平——中介者模式     25.1  世界需要和平!     25.2  中介者模式     25.3  安理会做中介     25.4  中介者模式优缺点    第26章  项目多也别傻做——享元模式     26.1  项目多也别傻做!     26.2  享元模式     26.3  网站共享代码     26.4  内部状态与外部状态     26.5  享元模式应用    第27章  其实你不懂老板的心——解释器模式     27.1  其实你不懂老板的心     27.2  解释器模式     27.3  解释器模式好处     27.4  音乐解释器     27.5  音乐解释器实现     27.6  料事如神    第28章  男人和女人——访问者模式     28.1  男人和女人!     28.2  最简单的编程实现     28.3  简单的面向对象实现     28.4  用了模式的实现     28.5  访问者模式     28.6  访问者模式基本代码     28.7  比上不足,比下有余    第29章  OOTV杯超级模式大赛——模式总结     29.1  演讲任务     29.2  报名参赛     29.3  超模大赛开幕式     29.4  创建型模式比赛     29.5  结构型模式比赛     29.6  行为型模式一组比赛     29.7  行为型模式二组比赛     29.8  决赛     29.9  梦醒时分     29.10  没有结束的结尾    附录 A  培训实习生——面向对象基础     A.1  培训实习生     A.2  类与实例     A.3  构造方法     A.4  方法重载     A.5  属性与修饰符     A.6  封装     A.7  继承     A.8  多态     A.9  重构     A.10  抽象类     A.11  接口     A.12  集合     A.13  泛型     A.14  委托与事件     A.15  客套    附录 B  参考文献

章节摘录

插图:

媒体关注与评论

前言本书是一本程序集?NO。本书是一本故事集?NO。本书是一本通过故事讲述程序如何设计的方法集。本书是给连Hello World都没写过的非程序员看的书吗?NO。本书是给玩过穿孔纸带(0/1)、写过汇编、BASIC、C、C++、Delphi、Java、C#等语言,开发过覆盖全球、使用人数过亿、数百万行代码等大型系统的骨灰级程序员看的书吗?NO。本书希望能给渴望了解OO世界的初学者、困惑于僵硬、脆弱、无法复用的代码编程体验者、一直打着OO编程的旗号,做着过程式开发的基于对象的编程实践者一些好的建议和提示。本书起因写本书源于我一次做培训的经历,学生大多是计算机专业的学生或有过一定经验的在职开发者。他们都知道类、方法、构造方法、甚至抽象类、接口等概念,并用Visual Studio写过不少的Windows或Web程序,可是当我提问为什么要用面向对象,它的好处在哪里时,却没有人能完整地讲得出来,多数人的反应是,概念知道的,就是表达不清楚。针对于此,我就举了中国古代的四大发明中活字印刷的例子(见第1章),通过一个虚构的三国曹操做诗的情景,把面向对象的几大好处讲解了一下,学生普遍都感觉通俗易懂,觉得这样的教学比直接告诉面向对象有什么好处要更加容易理解和记忆。这就使得我不断地思考这样一个问题,学一门技术是否需要趣味性、通俗性的引导。我在思考中发现,看小说时,一般情况下我都可以完整地读完它,而阅读技术方面的图书,却很少有真正的每章每页的仔细阅读。尽管这两者是有很大区别,技术书中可能有不少知识是已经学会或暂时用不上的内容,但也不得不承认,小说之所以可以坚持读完是因为对它感兴趣,作者的文字吸引你。而有些技术书的枯燥乏味使得阅读产生了困难,通常读个前几章就留待以后再说了。技术课的教学同样如此,除非学生是抱着极大的学习动机来参与其中,否则照本宣科的教学、枯燥乏味的讲解,学生一定会被庞杂的概念和复杂的逻辑搅晕了头脑,致使效果大打折扣。也正因为此,往往造成部分学生,学了四年的计算机编程,却可能连面向对象有什么好处都还说不清。为什么不可以让技术书带点趣味性呢,哪怕这些趣味性与所讲的技术并不十分贴切,只要不是影响技术核心的本质,不产生重大的错误,让读者能轻松阅读它,并且有了一定的了解和感悟,这要比一本书写得高深无比,却被长期束之高阁要好得多。也正是这个原因,本人开始了关于设计模式的趣味性写作的尝试。本书读者显然本书不是给无任何编程经验的人看的,对于想入这一行的朋友来说,找一门编程语言,从头开始或许才是正道。而本书也不太适合有了多年面向对象开发经验,对常用的设计模式了如指掌的人看的。毕竟这里更多的是一些基础性的东西。我时常拿程序员的成长与足球运动员的成长做对比。GoF的《设计模式》好比是世界顶级足球射门集锦,《重构》、《敏捷软件开发》、《设计模式解析》好比是一场场最精彩的足球比赛。我为之疯狂,为之着迷。可是我并不只是想做一个球迷(软件使用者),而是更希望自己能成为一个足球运动员(软件设计编程者),能够亲自上场比赛,并且最终能成为球星(软件架构师)。我仔细地阅读这些被誉为经典的著作,认真地实践其中代码,但是我总是半途而废、坚持不下去,我痛恨自己意志力的薄弱、憎恶自己无端地放弃,难道我真的就是那么的笨?痛定思痛,反思悔过。我终于发现,贝利、马拉多纳不管老、胖是用来敬仰的,贝克汉姆、罗纳尔迪尼奥不管美、丑是用来欣赏的,但他们的球技……嗨,客气地说,是不容易学会的,客观地说,是不可能学得会的。为什么会这样?原来,我学习中缺了一个很重要的环节,我们在看到了精彩的球赛,欣赏球星高超球技的同时,却忽略了球星的成长过程。他们尽管有一定天分,但却也是从最底层通过努力一点一点慢慢显露出来的,我们需要的不仅仅是世界杯上的那定乾坤的一脚,更需要这一脚之前是如何练出那种神奇的方法,对于程序员来讲,精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。本书显然不是培养足球明星(软件架构师)的俱乐部,而是训练足球基本功的学校,培训的是初学足球的小球员(面向对象的程序员),本书希望的是读者阅读后可以打好面向对象的基础,从而更加容易并深入的去理解和感受GoF的《设计模式》以及其他大师作品的魅力。本书定位本书是在学习众多大师智慧结晶的图书作品、分享了网上多位朋友的实践经验的基础上,加之自己的编程感受写出来的。正如牛顿有句名言:“如果说我比别人看得更远些,那是因为我站在了巨人的肩上。”但显然,本书并没有创造或发现什么模式,因此谈不上站在巨人肩膀上看得更远。所以作者更希望本书能成为一些准备攀登面向对象编程高峰的朋友的登山引路人、提携者,在您登山途中迷路时给予指引,在您峭壁攀岩摔跤时给予保护。本书特色本书有两个特色,第一特色是重视过程。看了太多的计算机编程类的图书,大多数书籍都是集中在讲授优秀的解决方案或者一个完美的程序样例,但对这些解决方案和程序的演变过程却重视不够,好书之所以好,就是因为作者可以站在学习者的角度去讲解问题所在,让学习门槛降低。《重构与模式》中有一句经典之语:“如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中蕴藏着大智慧。”本人就希望能通过小菜与大鸟的对话,在不断地提问与回答过程中,在程序的不断重构演变中,把设计模式的学习门槛降低,让初学者可以更加容易地理解,为什么这样设计才是好,是如何想到这样设计的。本书的第二个特色就是贴近生活。尽管编程是严谨的,不容大话和戏说。但生活却是多姿多彩的,而设计模式也不是完全孤立于现实世界而凭空想出来的理论。事实上所有的模式都可以在生活中找到对应。因此,通过主人公小菜和大鸟的对话,将求职、面试、工作、交友、投资、兼职、办公室文化、生活百味等等非常接近程序员生活原貌的场景写到了书中,用一个个小故事来引出模式,会让读者相对轻松地进入学习设计模式的状态。当然,此举的最大目的还是为了深入浅出,而非纯粹噱头。本书内容本书通篇都是以情景对话的形式,用一个又一个的小故事或编程示例来组织的。共分为四个部分。第一部分是面向对象的意义和好处以及几个重要的设计原则,通过小菜面试的失败引出;第二部分是详细讲解23个设计模式;第三部分是对设计模式的总结,利用小菜梦到的超级模式大赛的场景,把所有的面向对象和模式概念都拟人化来趣味性的总结设计模式之间的异同和关键点。第四部分是附录,主要是针对对面向对象不熟悉读者的一个补充,通过一个例子的演变介绍了类、封装、继承、多态、接口、事件等概念。本书人物及背景小菜:原名蔡遥,22岁,上海人,上海某大学计算机专业大学四年级学生,成绩一般,考研刚结束,即将毕业,正求职找工作。大鸟:原名李大辽,29岁,小菜的表哥,云南昆明人,毕业后长期从事软件开发和管理工作,近期到上海发展,借住小菜家在宝山的空套房内。小菜以向大鸟学习为由,也从市区父母家搬到宝山与大鸟同住。本书研读方法本书建议按顺序阅读,如果您感觉由于面向对象知识的匮乏,例如对继承、多态、接口、抽象类的理解不足,造成阅读上的困难,不妨先阅读附录一的“培训实习生——面向对象基础”部分,然后再从第1章开始阅读。如果您已经对不少设计模式熟悉,也不妨挑选不熟悉的模式章节阅读。 尽管本书中的代码都提供下载,但不经过读者的自己手动输入过程,其实阅读的效果是大打折扣的。强烈建议读者根据样例自己写程序,只有在运行出错,达不到预期效果时再查看本书提供的源程序,这样或许才是最好的学习方法。有问题可及时与我联系。我的电子邮箱是chengjielong@163.com,博客是http://cj723.cnblogs.com/。本书中的很多精华都来自许多大师作品,建议读者通过笔记形式记录,这将有助于您的记忆和理解设计模式,增强最终的读书效果。本书中出现的“[ ]”是表示句子摘自某书。例如,“策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户[DP]。”其中“[DP]”表示此名摘自《设计模式:可复用面向对象软件的基础》,详细摘要说明请参看附录二。本书中29章中的虚拟人物姓名都是软件编程中的专业术语,因此凡是专业术语被指向人物姓名的都用斜体字表示,以和实际术语区分。例如,“第一位是我们OOTV创始人,面向对象先生”,这里的斜体字面向对象指人名。关于本书学习的疑问解答看本书需要什么基础?主要是C#或其他编程语言的基础知识,如变量、分支判断、循环、函数等编程基础,关于面向对象基础可参看本书的附录一。设计模式是否有必要全部学一遍?答案是,Yes!别被那些说什么设计模式大多用不上,根本不用全学的舆论所左右。尽管现在设计模式远远不止23种,对所有都有研究是不太容易的,但就像作者本人一样,在学习GoF总结的23个设计模式过程中,你会被那些编程大师们进行伟大的技术思想洗礼,不断增加自己对面向对象的深入理解,从而更好的把这种思想发扬光大。这就如同高中时学立体几何感觉没用,但当你装修好房子购买家俱时才知道,有空间感,懂得空间计算是如何的重要,你完全可能遇到买了一个大号的冰箱却放不进厨房,或买了开关门的衣橱(移门不占空间)却因床在旁边堵住了门而打不开的尴尬。重要的不是你将来会不会用到这些模式,而是通过这些模式让你找到“封装变化”、“对象间松散耦合”、“针对接口编程”的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。成为诗人后可能不需要刻意地按照某种模式去创作,但成为诗人前他们一定是认真地研究过成百上千的唐诗宋词、古今名句。如果说,数学是思维的体操,那设计模式,就是面向对象编程思维的体操。我学了设计模式后时常会过度设计,如何办?作者建议,暂时现象,继续努力。设计模式有四境界:1.没学前是一点不懂,根本想不到用设计模式,设计的代码很糟糕;2.学了几个模式后,很开心,于是到处想着要用自己学过的模式,于是时常造成误用模式而不     自知;3.学完全部模式时,感觉诸多模式极其相似,无法分清模式之间的差异,有困惑,但深知误用之害,应用之时有所犹豫;4.灵活应用模式,甚至不应用具体的某种模式也能设计出非常优秀的代码,以达到无剑胜有剑的境界。从作者本人的观点来说,不会用设计模式的人要远远超过过度使用设计模式的人,从这个角度讲,因为怕过度设计而不用设计模式显然是因噎废食。当你认识到自己有过度使用模式的时候,那就证明你已意识到问题的存在,只有通过不断的钻研和努力,你才能突破“不识庐山真面目,只缘身在此山中”的瓶颈,达到“会当凌绝顶,一览众山小”的境界。编程语言的差异本书讲的是面向对象设计模式,是用.NET中的C#语言编写,但本书并不是主要讲解C#语言或.NET框架的图书,因此本书同样适合Java、VB.NET、C++等其他一些面向对象语言的读者阅读来学习设计模式。就Java而言,主要差异来自C#对于子类继承父类或实现接口用的都是“:”,而Java中两者是有区别的。当Cat继承抽象类Animal时,Java语法是public class Cat extends Animal当Superman实现接口IFly时,Java语法是public class Superman implements IFly然后Java中所有的方法都是虚拟的,因此不用指定new或是override修饰符。还有一些其他差异,但基本都不影响本书的阅读。对于VB.NET的程序员,如果阅读困难,不妨去网上查找关于转换C#与VB.Net语言的工具,比如http://www.kamalpatel.net/ConvertCSharp2VB.aspx,将下载本书的源代码转换后再进行阅读。C++的程序员,可能在语言上会有些差异,不过本书应该不会因为语言造成对面向对象思想的误读。不是一个人在战斗首先要感谢我的妻子李秀芳对我写作本书期间的全力支持,没有她的理解和鼓励,就不可能有本书的出版。而我们的宝宝也将在2008年初出生,希望等宝宝懂事后能知道,在宝宝的母亲怀胎过程中,宝宝的父亲也在为书的诞生而努力。也希望本书成为赠送给他或者她的最好的礼物。父母的养育才有作者本人的今天,本书的出版,寻根溯源,也是父母用心教育的结果。养育之恩,没齿难忘。本书起源于本人在“博客园”网站的博客http://cj723.cnblogs.com/中的一个连载文章《小菜编程成长记》。没想到连载引起了不小的反应,网友们普遍认为本人的这种技术写作方式新颖、有趣、喜欢看。正是因为众多网友的支持,本人有了要把GoF的23种设计模式全部成文的冲动。非常感谢这些在博客回复中鼓励我的朋友。这里需要特别提及洪立人先生,他是本人在写书期间共同为理想奋斗的战友,写作也得到了他的大力支持和帮助,我写作的不少妙句也来自我们俩共同合作的网站http://www.miaoju.net。在此对两位表示衷心的感谢。写作过程中,本人参考了许多国内外大师的设计模式的著作。尤其是《设计模式》(作者:简称GoF的Erich Gamm,Richard Helm,Ralph Johnson,John Vlissides)、《设计模式解析》(作者:Alan Shalloway,James R. Trott)、《敏捷软件开发:原则、模式与实践》(作者:Robert C.Martin)、《重构——改善既有代码的设计》(作者:Martin Fowler)、《重构与模式》(作者:Joshua Kerievsky)、《Java与模式》(作者:阎宏等等,没有他们的贡献,就没有本书的出版。也希望本书能成为更好阅读他们这些大师作品的前期读物。写作过程中,本人还参考了http://www.dofactory.com/ 关于23个设计模式的讲解,并引用了他们的结构图和基本代码。在博客园中的许多朋友,比如张逸、吕震宇、李会军、idior、Allen Lee的博文,MSDN SmartCast中李建忠的讲座,CSDN博客中的大卫、ai92的博文,网站J道www.jdon.com 的版主banq的文章都给本人的写作提供了非常大的指引和帮助,在此表示感谢。另外博客园的双鱼座先生还对本人的部分代码提出了整改意见,也表示衷心的谢意。详细参考资料与网站链接,见附录二。事实上,由于本人长期有看书记读书笔记的习惯,所以书中引用笔记的内容,也极有可能是来自某本书或者某个朋友的博客、某个网站的文章。而本人已经无法一一说出其引用的地址,但这些作者的智慧同样对本书的写作带来了帮助,在此只能说声谢谢。最后,对本书的责任编辑陈冰先生及清华大学出版社的相关工作人员,表示由衷的感谢。本书的出版离不开陈先生的指导和其他工作人员的辛勤工作。程  杰   2007年7月序这本书最初起源于作者程杰在其博客中所写的连载文章——《小菜编程成长记》。随着文章的一篇篇发布,这些文章新颖的表现形式和独特的风格受到了众多读者的关注和喜爱,很多人在博客中留下了评语。有些虽然只有短短的一句话,但也可以看出是对作者由衷的感谢。作为本书的策划编辑,最初我也是在博客园中浏览博文时阅读到这些文章的,我的直觉和网友们热情洋溢的评语告诉我,这些文章有作为一部书出版的价值,于是我就联系了程杰。几个月后,我拿到了这部书的初稿。初审后,我发现书稿中存在一些问题。比如,当时书稿中还没有对UML类图进行讲解的内容,这会导致初学者学习后面的内容时感到理解困难,于是我请作者在第1章中增加了UML类图这一节,这是简洁却精彩的一节;另外,当时作者为了便于表达某些举例的含义,有相当数量的代码都是用中文编写的,虽然中文代码看似易懂,但却会令绝大多数早已熟悉了英文代码的程序员们感到困惑和难以阅读,所以我请作者把代码改回为程序员们所熟悉的英文代码,并同时添加了更详细的中文注释。经过几番认真和辛苦的修改与调整,现在,这本书在你的手中了。对于这本书,我想说的是,其中的很多篇章非常的精彩,会令你禁不住叫好,但也有一些篇章会显得有些拖沓,或者是有些牵强,然而,随着你读过那些精彩的段落,读过那些不那么精彩的段落,最终,你会读到书的最后一页(很多书不能使你做到这一点),当你读完全书时,你会发现,你的心情很愉快,很平静,即使是那些当时看起来不那么精彩的段落,现在也都成为了这温馨故事的一部分。你会记得书中那个好学、天真、而又执著的小菜,也会记得那个善于启发,经验老道的大鸟。下面这些是来自作者博客的网友评论,看完这些热情洋溢的评论,就和作者一起,进入设计模式的大话境界吧。本书策划编辑 陈冰2007年10月18日网友评论daigua:看到这篇精彩的成长记,我连饭都不想吃了,什么事都不想做,就想把它看完。写得太好了!是啊,现在很多教材都太枯燥了,不好理解。其实书的意义就在于让人学到知识,而不在于用什么方式,为什么一定要那么教条呢,只要能让人比较容易地学到书里的知识就是一本好书。谢谢你啊,给了我很大的信心。我现在很有信心把编程进行到底,哈哈。光头小松鼠:绝对经典!一篇小故事,把程序的灵活性、可扩展性、可维护、可复用等说得怎一个妙字了得!沉默天蝎:感激,让我这个菜鸟顿悟。这样的写法太好了,如果老大你出书,我肯定购买!碳碳:这种学习的方式真的很神奇,尽管每个人都能想到,但不是每个人都能做到。或许可以把系列文章归档出书,说不定会收到追捧,呵呵。Bryant:真的是太棒了!我原来看过一些有关设计模式的书,都觉得太抽象,根本就不能理解,也不知道啥时候能用上。看过你写的这些文章,才知道了应该怎样在实际中运用这些模式,而且文笔非常的幽默,享受!Thx ^_^ 支持!有个建议,最好慢慢地把所有的设计模式都聊聊!Bryant:不错,楼主说的非常幽默,通俗,把我们一步一步带入面向对象的世界 thx ^_^Bryant:太棒了,我正是这样初学设计模式的小菜,需要这样的文章,谢谢楼主!菜鸟飞:楼主,加油,支持你。在这里献上崇高的敬意,不管你有没有感受到我挚热的目光。请你相信,有这样一些人一直在默默地关注着你,期待着你。wdx2008:非常好!!!幽默,搞笑,易懂,真神人也,鬼神不可测!支持楼主!!空明流转:呵呵,楼主说得蛮好。国外的文章好就好在有例子,“废话”多,所以比较好理解。至于行文风格嘛,这个倒是因人而异的。我个人就偏向于论文式的行文风格,逻辑严密,层层递进,阐述也很清晰。就有点像有序数组,二分法就能轻松查找到自己想要的东西,但国内的那种论文式的文章,呵呵,我看是卖弄的成分居多,实作的成分偏少,所以才那么难读的吧。Char:现在的大学就缺少这种既通俗易懂,又有内容的东西。Apple:不错,学习了。希望博主能再接再厉多写点,看了很多书都没有看你的文章明白得快。SnowDoggie:呵呵,挺好的。其实要想找个绝对没有漏洞的例子是很辛苦的,关键在于文章本身能说明问题,能体现作者的意图就足够了。昨天和朋友一起爬山的时候还讨论了你的文章风格,其实最有用的还是你这种寓教于乐,步步深入的风格,阳春白雪的经典虽然是经典,大众却不见得喜欢。Jerry:不错的文章,简单明了,又不乏趣味,好的文章就得顶下。izhizhe2000:很好,整个系列写完之后可以出书了,保证受大学生的广泛欢迎!mekong:很是欣赏这样幽默风趣又不失睿智深刻的文字。Wuyisky:呵呵,楼主不仅程序写得好,而且还有文学天赋。佩服!Jack:真正的高手是用最生动的语言,最简单的例子,这才是真正的“深入浅出”。赞!!!老兄,加油,继续哟。BoyLee:人才,爱死你了。做了一年外包,没技术含量。正打算从头学习这些东西,这样的方式我最喜欢了。Leoxu:很不错,对正在找工作的我有很大的帮助。以后会多来光顾。Ame:写得承上启下,始终有一主干线贯穿,作者的文字功底很强啊!Artech:我很喜欢你的写作风格!以一种调侃的方式讲明一个深奥的问题。我一直在尝试如何以一种让每个人都懂得的语言来向大家分享我所理解的.NET。你给了我一个启发。8:醍醐灌顶!感谢,领悟了不少东西!!!Yufengly:真是太容易理解了,而且看后印象深刻,继续努力!期待下文……支持作者!Sopper:支持,例子举得很形象,写得很棒,以后会常来关注。d:会技术的高人有很多,但能把技术讲得如此通俗易懂的高人并不多,你是一个,谢谢~~~white.wu:非常喜欢您这种授人以“渔”的文章。Answer:强啊,本菜鸟受益很大,谢谢。Hanlei:强,很受益啊,感谢楼主,写出这么好的文章来。金色海洋(jyk):继续呀,我们期待中……,写得很好,一看就懂。DSharp:看博客园这么久了,终于看到一篇有中国特色的好文。

编辑推荐

《大话设计模式》是准备攀登面向对象编程高峰朋友们的引路人和提携者;《大话设计模式》是学习、体会和领悟了众多大师智慧结晶后的图书作品;《大话设计模式》是你深入理解和感受GoF的《设计模式》及其它大师作品的必备书籍;《大话设计模式》授之以“鱼”,更授之以“渔”。感受设计演变过程中所蕴含的大智慧,体会乐与怒的程序人生中值得回味的一幕幕。设计模式的趣味解读,面向对象的深入剖析。在诙谐与温馨中做一次面向对象编程思维的体操。

图书封面

图书标签Tags

评论、评分、阅读与下载


    大话设计模式 PDF格式下载


用户评论 (总计172条)

 
 

  •   类是对对象(属性)的抽象,接口是对行为的抽象。对于任何一个OO程序员而言,设计模式即使不是最重要的,也是第二重要的。15年前,GOF的《Design Patterns:Elements of Reusable Object-Oriented Software》横空出世,开创性的提出了23种设计模式,将OO带入了一个崭新的时代。自那之后,设计模式就成了OO世界的世界语,无论地域,无论种族,每个OO程序员都能和他人畅快沟通,而无需担心有任何歧义。然而,要领悟各种设计模式的精髓,却非一朝一夕的事,需要在实践中千般锤百般炼。回到程杰的这本《大话设计模式》,可以说是GOF的白话文版,通过简单有趣的例子,将23种模式一一解读,对初学者而言,是一本不容错过的好书。即使对有一定设计模式基础的程序员而言,相信也一定有所裨益。以下摘录一些书中精辟之言,以飨读者。

    > 面向过程设计开发相对容易,但不容易应对变化;面向对象设计开发困难,但却能更好的应对千变万化的世界。
    > 封装变化点是面向对象的一种很重要的思维方式。
    > 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
    > 开放-封闭原则:对于扩展是开放的,对于更改是封闭的。
    > 类是对对象(属性)的抽象,接口是对行为的抽象。
  •   这本书是对Gof4所著的《设计模式》的解读,或者深入浅出的入门,设计模式是面向对象的圣经之一,是让面向对象的analysis和designing还有programming的思维凝合在一起的一种思想,总共有23个设计模式,在这本《大话设计模式》中,作者还罗列了编程过程中的一些常理性的规则,如单一功能原则,依赖倒置原则等,说真的,面向对象的菜鸟读过这本书就会很快的成为高手,我是搞.net的,这本书适用于主流的java,c#,smalltalk等面向对象的语言,也就是说,设计模式讲的面向对象的过程是抛开计算机底层,完全从高层分析设计的,在国内,理解设计模式精髓的人太稀少了,这本书对设计模式的解读是透彻易懂。还有书中提到的两本书,headfirst和《重构》也是程序员的必读书。对于一个搞软件的需要具备的不仅仅是语言,工具,还有专业认证,更需要把编程的方法溶为思想,不管是否阅读过设计模式,这本书都应该看一看,很助于理解。再次为作者的智慧感到惊叹!
  •   学了那么久的面向对象的语言了,对于我们据说的OO编程大家真的理解的吗?看了本书后,才知道自己写的程序有多么的糟糕~!根本就没有什么面向对象可言!本书并没有什么语法知识,但它能带给你的是OO思想上的一次洗礼,用其中的模式可以编写出易扩展和维护\复用性高,冗余低程序来,虽然很基础,但就像我们唱歌,闭上眼睛,感觉唱得很好,但却不知道歌曲中歌词的含意,这就是看过和没看过的区别.本书虽是从GOF过来的,但难得我们国家在这编程方面出来一本好书,所以我同样力荐本书作为你进阶的书籍中必看的一本!
  •   很早之前就买了一本GOF的《设计模式》,第一章看完,就没有坚持继续看下去,前段时间,看到同事的桌上摆了这本《大话设计模式》,随手拿起来翻了翻,这一看不得了,爱不释手了都,晚上回家,打开本本,第一件事情就是到当当买下它,周二下的订单,周五就收到了,当当的效率还是可以的。这本书写的真的很不错,不是随便夸夸,而是其内容安排和实例讲解,加上对话式的行文,让人读起来像看小说一样轻松,不知不觉就在小菜和大鸟的对话中,掌握了设计模式的精髓,常常为作者能想出这样的故事式讲述方法,拍案叫好。虽然读起来轻松愉快,但是内容一点也没落下,对设计模式的讲解不可谓不精彩,不可谓不深入,不可谓不透彻。总之一句话,一本国人的好书!
  •   故事很幽默,在幽默的故事中引出面向对象编程的原则和思想,真不知道作者是怎么想到的。不仅适宜初学者对设计模式展开第一次的亲密接触,也适用于老鸟们温故而知新。
  •   可复用面向对象设计模式入门的首选,建议先看这本书,然后再看GoF的23种设计模式。
  •   学一点设计模式一定是受益非浅的,尤其是新手必读。新手推荐的阅读顺序是这样的,先从大话设计模式的附录一:面向对象基础看起。然后选择一本结合编程语言的面向对象书籍,java和C++都非常的多,flex就可以直接看黑羽的殿堂之路。再然后就可以看这本《大话设计模式》了。再然后就可以看那本经典的《深入浅出设计模式》了。这样下来,新人就能成为老鸟了!
  •   以情景对话的形式,用多个小故事或编程示例来组织讲解GoF总结的23个设计模式.
  •   在网上看了电子书一章后,才决定购买,真是介绍编程模式中的佳品!非常难得的好书。以前看那么多介绍面向对象编程方法的书都几乎白费了,每次看都昏昏欲睡的,这书则不同,通过两个程序员的简单对话,非常有生活气息,然后每个模式都有代码示范,很快用模式编程与不用模式编程,就对比出孰优孰劣了。要掌握本书,还得多多做练习,或在项目中使用这些方法,这样进步最快。另外,要对当当提出批评,我的书前几页竟然像被人狠抓过一样的皱,买这么多次书,这是头一回的,真是莫名其妙,有几页还是撕裂了几个口子,我只得用胶带粘上。当当要注意员工的培训啊,在你这儿买书,是给你们面子!不要再发生类似事件了。
  •   设计模式是每个面向对象编程的程序员都应掌握的,这本书总的来说语言简单幽默,学习时也不让人觉得枯燥
  •   以小菜在大鸟的帮助下从面向过程的初级程序员到熟知设计模式的公司程序员明星的故事讲述23个设计模式。读完本书基本可以通过一个设计模式想起书中的故事,然后通过故事想起该模式的类图,基础代码,对初学者来说这是很重要的。
  •   书很不错,循序渐进的启发,有力引导人以面向对象设计思想方式转变。面向过程到面向对象最难的就是思想的转变,本书中的讲解从最开始的面向过程的思维,通过增加,需求,讲究实际软件中的问题,启发读者尝试通过对程序进行面向对象的重构。
  •   这是面向对象编程当中的重要技巧:模式设计技术的超级入门书,我说超级的意思是超级的简单,通俗易懂,能够吸引人学下去,当然也有缺点:有些时候,为了追求通俗易懂,有些模式写的简单了一些,进度有点快。模式设计很难懂,要明白一个模式,我常常要花费半天(4小时)的功夫,过去看过一些这方面的书,都没能读完,这本书读了一半,感觉还不错。
  •   说实话,本书的意图是向大家展示面向对象的思想是很接近生活实际的,面向对象的语言与以往的低级语言或者面向过程的语言不通,这种思想的基础就是人类的自然思维,你怎么看待这个世界的资源配置、分工合作,就应该怎么去理解面向对象这种思想,有人说本书通俗易懂,那是因为作者懂得这个道理,其实大家都可以做到讲面向对象的思想融入生活中去理解和看待一些事情,时间长了,在你面对一个设计问题的时候,就会很自然地运用面向对象的思想来解决问题,如果你懂得这个道理,并且坚持锻炼自己,总有一天,你也能写出本书这样的文字来,而本书正是想你阐述这个问题,它不光是在对大家讲述设计模式这个很小的方面,而是教会大家如何真正理解面向对象这个博大精深的思想。
  •   这本书通过简单的“大话”方式,把设计模式这一软件工程的核心课程娓娓道来,风格清新易懂,但读者看这本书的前提应该是有面向对象语言的基础,最好是C#
  •   建议已经学习了面向对象,正准备提高自己的朋友阅读此书,用很轻松的方式讲解了设计模式的演化和使用场合。
  •   对于了解面向对象,又是设计模式初学者的人来说,本书是经典教科书
  •   我是搞java的。真本书真的很适合设计模式的初学者,看完这本书不但是设计模式,面向对象的理解也会上一层楼。不错!
  •   刚看了附录A,用“动物运动会”的例子很形象的介绍了面向对象语言的相关基础知识。同学推荐的设计模式入门书籍~~
  •   今天刚拿到手,迫不及待的翻看了第一章,感受颇深~
    虽然我是学嵌入式的,大多数是面向底层开发。但此书中的设计思想对任何从事程序开发的人都很有益处,尤其是在代码的可维护性、灵活性、可复用性上讲解的很深刻。而且语言诙谐幽默,让人眼前一亮。。非常难得的一本书。。
  •   对于学习面向对象程序设计语言的人来说,这是本国内不可多得的设计模式入门好书,文章风趣幽默,通俗易懂,当然这种书只看一遍是远远不够的,要自己学着用代码实现,然后再与书上的代码对照,这样学习更有效果。当然学完这本可以继续学习国外的《设计模式》那本圣经
  •   这本书不仅适用于初学者来提高编程思维,而且对于软件工作者学习设计模式,提高开发效率都很有帮助
  •   充满理论而又不乏味,用丰富而幽默的故事来讲解编程技术,这样的书确实不多见,程杰老师能想到这么丰富的故事,足见其深厚的教学功底和对设计模式的透彻理解。我用了2个多星期慢慢地把这本书看完了,可以用四个字来形容,那就是“豁然开朗”。
  •   在书店看到这本书之后就把我迷住了,回去后就到当当上买下了。这是第一本我能读懂的设计模式书籍。以前一时冲动买过一本GOF的《设计模式》,可惜本人水平太菜看不懂,只好束之高阁了。个人觉得比《大话设计模式》更符合中国人的口味。虽然现在早已不做这方面工作了,认为这是自己买的最好的计算机书籍之一。一直想送给我的朋友。
  •   如果你不懂什么叫设计模式,那么就买这本书扫盲吧!前提是要有扎实的面向对象的基础!
  •   感觉这本书写的很好,不懂设计模式,根本无法真正认识面向对象的感念
  •   看了前三章,作者的语言通俗易懂,讲述的思路清晰,是一本学习设计模式的好书,读者要是结合书中的讲解,做一些编程练习,效果会更好。
  •   这书还是挺适合设计模式的初学者的,若要进阶的话,恐怕还得阅读其他的书籍了,如《深入浅出设计模式》和GOF的那本名著了
  •   深入浅出,让人理解深刻。配合GOF的设计模式穿插阅读,更有体会。
  •   设计模式的入门是学习设计模式的门槛之一,通常那些经典的设计模式著作很难让人理解,并且读完它们需要极大的毅力与勇气。此书却能用相对容易接受的方式让人迅速阅读完这本书并对设计模式有了初步概念。对进一步深入学习设计模式的门槛降低了不少。虽然书中有些例子俺觉得相当的勉强。
  •   无论作者如何写, 设计模式都适合一定编程经验的人看的 比wof gang的容易理解多了, 很不错的设计模式的书 很满意
  •   通俗易懂,而且让你彻底了解面向对象,彻底掌握面向对象的设计。华为,中兴,腾讯,金蝶,如果你要面试开发或设计的岗位,又是高级语言,建议必看此书,因为这四家公司我都面试了,O(∩_∩)O~
  •   虽然我的工作经验有好几年了,但是真正用到设计模式的项目基本为零。设计模式方面的技术书籍普遍枯燥乏味,很难坚持看下去,所以把设计模式应用到项目中也是空谈。这本书用通俗幽默的场景和语言描述设计模式,能使阅读者真正理解设计模式的精髓。希望看完这本书以后,能像作者描述的那样,去读《设计模式》的时候能醍醐灌顶,也希望我在阅读完以后能真正写出可维护、可复用、可扩展、灵活性好的代码。
  •   之前没有学习过设计模式,读了这本书后对23个常用模式有了概念上的了解,但要用好,很有很长的路要走。各人觉得这本书比较适合初学者,因为授课过程轻松诙谐,比起各种经典来说要的门槛低。
  •   这本书写的是一个人学习面向对象的过程。故事与技术相结合。。很有创意。。。看了此书后感觉自己写的代码太烂了。。完全没有复用性,可扩展性,维护性和灵活性。。。书中的故事情节通俗易懂。。贴近生活。。小菜犯的错也是自己在学习中经常犯的错误。。。作者使读者很清析认识到自己经常会犯的错误。。并给以纠正。。。。这是一本好书。。很值得一看。。。所以我把这本书当作生日礼物送给朋友。。。。。。
  •   用轻松诙谐的风格讲解设计模式这样的题材,难能可贵,看得出来作者是一个爱学习的人,书中经常出现其他老外经典书籍的语录,虽然有些地方比喻得比较牵强,但为了支持国货,我给打满分~另外结尾一篇ootv大赛非常精彩,是全书最出色的部分,就这部分而言,不逊于任何外国“名著”
  •   用诙谐的语言介绍了Gof的23种设计模式。不过内容略简单。
  •   这本书太好了,每个例子都通俗易懂,把23中设计模式以对话的形式给大家讲解,非常容易理解。
  •   此书适合有一定编程知识和对设计模式感兴趣的初学者
  •   花了几天时间把这本书读了一遍,感觉对我这种初学设计模式的人是非常有帮助的。加深了我对面向对象的理解,而且书写的非常有趣,没有枯燥的感觉。还有就是对我自己来说应该对看几遍。
  •   这是我第一次买和设计模式相关的书,这本书比较浅显易懂,适合有一定编程经验,想学习OO编程的程序员。
  •     书中,以几个角色之间的对话和交流,用互动的形式来对设计模式进行讲解,很形象,很透彻,也很清晰易懂,很适合初学者来看。
  •   把复杂的东西写得浅显易动懂,读了这本书,对面向对象和设计模式有较深的了解,适合一直想研究设计模式,却无从下手的朋友~~
  •   通过各种生活中的实例讲解各个设计模式,通俗易懂,对设计模式有很好的理解,很适合初学者。
  •   我觉得这本书写得相当有趣味,一个个小故事和设计模式之前的共性让作者的行文生动出色,读完后对设计模式有了很深的认识,接下来,我会再读一遍,然后动手重构自己的程序。
  •   书没得说啊,本人还是刚毕业的学生(非计算机专业),之前对设计模式理解不深入,平时学习常用的也就工厂和单例,但是随着几个月工作接触工作的方方面面,越发地觉的设计模式的重要性,与其说是设计模式还不如说的思考模式,思维最重要,而大话这本书,正是从工思维这个层面入手的,所以看着很有感觉,多谢作者给我们菜鸟们提供了这样一本好书
  •   给国内技术书这么高的评价在我印象中是很少的,但这本绝对值得,专门为同事们买的,虽然实际项目中用到的设计模式很少,但这绝对是提高过程中必经的一条路,以前看过PDF版,也看过同事的私人买的书,这次买书一起批量买下,算是补上本好书在公司图书里
  •   对想学习面向对象的模式的人来说,值得一看!
  •   大话设计模式这本书确实很新颖,暂且不讨论书的结构问题,单从形式上来说可以算是一种创新,摒弃了传统书籍的一味讲解理论的风格,该书更加生动形象地对设计模式进行讲解,可见作者对设计模式理解之独到。
  •   书很好,书的纸张质量也很好。写程序1年多来,这是我第一次接触设计作者写得很棒,每个模式确实通俗易懂偏偏通俗了,又少了点深度。或许我该感谢这本书,因为我准备买下《设计模式》,《重构》,《重构与模式》,《设计模式解析》等书籍再进一步深入。
  •   设计模式的书看过一些了,从最早的“四人帮”的设计模式,到最新的Headfirst设计模式。这本书非常适于初学者和有一定coding经验积累的人,实战性很强,而且行文比较轻松愉快,使人在愉快的阅读和练习中掌握设计模式。极力推荐想学习”设计模式“的人选购,呵呵
  •   想学设计模式的有福气咯而且里面有对面向对象特性的趣味解释
  •   浅显易懂,对设计模式初学者很有好处,里面的示例程序采用c#语言。
  •   以前看过一些类似的设计模式的书,也许是我能力不够,看了半天不知道说什么。这本书通俗易懂,对于想入门设计模式的人非常合适,建议看完这本书在去看一些比较深的设计模式的书籍。对我来说这本书就是带我走进设,计模式的神作了,由浅入深这本很合适,我很推荐。不好的地方就是例子讲的比较简单了,但是对初学者来说,简单易懂才是最重要的。提醒下大家,电脑的书籍我不推荐在当当上买,比**贵很多,以前当当都是打75折,也许现在发展好了比较牛了,基本上电脑的书都打8折了,我也是最近才发现的,发现亏了很多。所以电脑类别的书我还是推荐去别的地方买~
  •   现在刚开始看的是后面的附录A面向对象基础。。因为面向对象还不是很熟悉,所以是从附录开始看的。是在书城看到这本书的,这本书的封面标题在那一堆的枯燥的颜色的编程书里显得特别显眼,乍看之下以为是谁放错了一本笑话书,好奇之余翻阅了一下,一下子就喜欢上了。很少有编程书让人有一直看下去的欲望。果断回家上网买书。
  •   本书很适合设计模式初学者,通过生活方式,以故意的形式吸引读者目光,让其有兴趣更好的读下去,改变了技术书籍一直以来沉闷的讲知识点的模式。。。
  •   拿到崭新的《大话设计模式》让我很开心,书送来时保护得很好,没有磨损现象,第一印象很不错了。睡觉前躺在床上翻开书,一股墨香就铺面而来。翻了一两页,细细地品味了一下书中诙谐幽默的字句。字里行间流露出作者的睿智。都说将很深奥的问题讲得小孩都能听懂的才是大师。这本书就有着如此的特点。很喜欢。
  •   很通俗的一本书特别适合设计模式入门的人看。基本的例子很好,每种设计模式总结的原则和优点精辟准确。我结合深入浅出设计模式在看。用这本书方便我的理解,用深入浅出设计模式做更高的提高。
  •   学校开设的设计模式课程很枯燥,无奈值得自己寻觅教材...在同学书架上发现了这本书,简单翻了两页,便直接强行借走......所有的设计模式都是一个小故事,同时也穿插了几个重要的设计原则,非常简单易懂,每个小单元的例子都很好上手,看书的同时最好敲一敲代码。但是个人感觉作为学习非常适合,但作为工具书似乎欠妥...
  •   这样的书比较难得,可以把面向对象里面的深奥模式,像讲故事一样生动的表述出来。我边看边笑 这就叫学习的乐趣了吧
  •   这本书已经看了第八章,从一个个生活场景中引入设计模式的概念,让人难忘!
  •   找了许久有关设计模式方面的,曾经有段时间看过head frist的电子书但是都没有看这本书这样幽默诙谐振奋人心。偶是刚学设计模式的菜鸟,这本书幽默的表达方式,深刻的讲解让我们这些菜鸟十分受益。我很多同学都买了这本书,而且他们都一致认为这本书是看看过的最有意思的专业方面的书籍。太感谢作者了,您要是再出书我还得买~~~
  •   这本书通俗易懂的阐述了设计模式的应用,不过读者应该在读书的过程中结合到自己的实际项目中去设计改进,加深对设计模式的理解
  •   适合设计模式入门的初学者研读,技术要点融汇在诙谐幽默的小说当中,是我读过的最轻松的技术类书籍,支持作者。博客园的朋友。
  •   起初我从网上最先阅读到其中一个章节,就被深深的吸引了。后来买到书后认真的阅读,觉得真的是收益匪浅,比我之前买的设计模式类的书籍更容易阅读,更容易理解。更难能可贵的是,它还会吸引你去读。这里我向所有想学习设计模式的人推荐这本书。另外我也有一个建议,建议读者把这本书翻译成英文的,让外国人也能享受到这么好的技术书籍。同时也能为中国程序员争争脸面(因为好多权威书籍都是国外出版的)。
  •   如果你在自学c#或是面向对象的编程语言,那这本书绝对是摸索中的灯塔,黑夜中的指路灯!看完书再写代码,你就会感觉到游击队和正规军的战斗力差距有多么大!!向作者致敬!!!
  •   这本书深入浅出地讲述了模式设计的各种方法和技巧, 以趣味对话的方式让读者在感受乐趣的同时深刻理解模式设计的各种优秀的设计理念, 我很喜欢
  •   非常不错的设计模式教材,采用C#作为基础语言,同时采用日常对话的方式进行讲解,虽然有些比喻不甚准确,但是起到了很好的作用,读书的时候充分调动了读者的积极性。不足就是书有点大,字有点大,如果做得小一些,有助于在更多的场合阅读
  •   我没有学过设计模式。不过看这本书发现编程的世界还是这么的有趣。越来越爱不释手。

    因为写这个评论。我打翻了水杯。半杯水洒在桌面上。唉。
  •   08年底读到此书,很久没有阅读的惊喜,这本书一下帮我理解了学习设计模式的实际意义,很多不理解的概念一下贯通了,难得的好书.希望能读到作者的其它作品.
  •   这本书写的比较浅显易懂,还有一本那个四个外国人写的设计模式很好很强大,但是初学者好像不是很好懂,还是先看看这本书。有了全面的了解,在看那边设计模式,基本上就搞明白了。
    还有一点,不要迷信那二十来种设计模式,那只是教程。实际应用种是活学活用的
  •   很好的设计模式入门书,诠释了编程不仅仅是技术还是艺术
  •   这个数对于学设计模式的人来说比较适合入门,讲的例子也比较贴近实际,通俗易懂,语言比较平实,不足之处在于有些例子还是比较牵强,希望作者再精雕细磨一下,使本书能更上一层楼,成为经典中的经典
  •   这本设计模式的书很适合初学者去研究与学习的过成。幽默诙谐,浅显易懂。希望能够很大家一起分享。
  •   有一定的理论和实践基础以后,这本书很有帮助:
    1、扩展自己的知识面,加之书中实例,将自己从一个编码人员向设计的方向牵引,并提供这个里面必要的、科学的、实用的相关辅助工具;
    2、逆向解析,从实例出发,再来阐述原因、理由,最终贯穿设计人员的思想以及思维模式,对于刚接触这个行业以及入门不久者是很不错的指引;
    3、系统性很强,逐步深入,而不是向我们常见的课本,每个知识点是孤立的,起码给我展示的是一个全貌。
    感觉接触太晚,现在已经转行,但是读到其中的内容,特别是思维模式和工具,对我现在分析一些问题,还是有一些启示。
  •   一本基础的入门的设计模式的书籍,情景对话的讲解,通俗易懂
  •   此书对面向对象设计模式诠释的很到位
  •   非常适合想要学习设计模式的初学者或有经验的人
  •   设计模式,是解决一些问题的固定模式,对于编程人员来说,读读受益匪浅
  •   买这本书的时候我也是带着忐忑的心去买的,因为怕不适合我,但是我拿到书之后就开始浏览一下,结果它让我爱不释手。真的写的太生动、太好了!以讲故事的形式及各种生动的比喻讲解了设计模式,很不错,看来我的选择是对的!我只想对作者说你丫太厉害了
  •   本书是基于C#编写的,阅读时并不需要读者有较高的程度设计与C#语言基础,是非常适合初学者的一本书,能够使读者获得C#与设计模式的基础知识,在轻松幽默与实践中学到非常实用的知识!
  •   之前在书店中偶然看到这本书便随手拿来阅读,不料一读起来就爱不释手,不舍得放下,后来索性就在网上买一本。真的很不错,读起来轻松诙谐幽默,生动,很容易理解,特别适合想了解设计模式的限售
  •   本人生性较懒,买书从不写评论,今天破例。这真是一本好书,生动有趣,通俗易懂。特别合适有了一定基础想提高面向对象编程的程序员。
  •   看了N本讲设计模式的书,看了之后都是似懂非懂,而这一本让我彻底搞懂了设计模式,绝对是一本好书。
    早知道这本书的话就不用绕这么大一个圈子去学习设计模式了。
    此书用很浅显的生活例子来讲解设计模式,语言生动幽默,看后印象深刻。
    值得推荐!
  •   很好懂,很生动。对于面向对象的编程思想有很好的理解。
  •   设计模式都是看了当时会,过后就基本上忘掉了。这本书用生动的小例子给我们讲解了设计模式,很好很好!!
  •   对于真正需要在软件设计上入门的所有同学,都建议去读一读这本书幽默诙谐的笔触,一个个生动的故事,引领我们进入设计模式的大门你真的需要这么一本书
  •   这本书对初学者来说真的是好书,很容易懂,很容易上手,说明作者对设计模式的思考很多
  •   这本书我已看一半,总体来说很不错,很适合像我这种刚接触设计模式的初级玩家,不足之处是没有对设计模式的应用有更详细的讲解,看完书只能停留在看懂、理解,在运用方面还是不能拿捏,不过此书我还是很喜欢的,引领我走进了设计模式的殿堂。
  •   通过对话的方式来解析很多术语,让初学者感到无鸭梨。也举一些公司上班模式时程序员所要做的事件更能让人知道以后编程员是做什么类型的工作性质的
  •   从《小菜成长记》到《大话设计模式》一直关注学习着, 以非常浅显的语言讲明白了设计模式。不管是系统学习或是想随便翻翻,都是非常值得的。
  •   文章里面描述了很多设计模式,虽然我不是学JAVA的,但是通过本书幽默生动的实例讲解,我也会很容易明白和记住各种不同的设计思想和设计模式。的确是一本与众不同的书,相比那些大家、专家写的书更让人通俗易懂。
  •   大话设计模式,是一本相对趣味的一本书籍。
    个人觉得要有一定的基础才购买本书。
  •   用很通俗的语言讲解了深奥的设计模式,非常容易理解,尤其适合刚接触设计模式的人
  •   没得说了,真绝了!用简单的故事或示例把抽象的设计模式理论表述的通俗易懂。我想作者一定有着丰富的开发和运用经验,才能把设计模式表达的这么清晰透彻。
  •   先要说一下文章的写作模式,以小说似的调侃带出一个个案例和设计模式。很生动,显得不那么枯燥。在同类别书中,的确是独具特色,看得出作者是用心在写书,不像有的书抄来抄去的。
    内容也写的很通俗易懂,所以说是科普式的读物。
    总而言之,一本难得的好书,学习计算机开发的人必读。
  •   这本书通过实际生活中的例子,阐述了设计模式的应用场景,是一本不错的书籍,值得一看
  •   本书以白话故事方式讲解的各种设计模式,已经买过了,这次帮朋友买的。
  •   趣味中学习到设计模式的美妙,比读经典模式书籍更有收获!
  •   以对话形式,来谈论设计模式,指出程序开发时的不足。
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7