Head First 设计模式
这是我阅读过的最有趣且最聪明的软件设计书籍之一
- 3 min read

内容简介 · · · · · ·
你不想重新发明轮子(或者更差的是,漏气的轮子),所以你从设计模式中寻求协助——设计模式是过去人们面对同样的软件设计问题所学来的经验。有了设计模式,你就可以利用他人实践经验的精华,省下的时间可以用在……其他的事情上,一些更有挑战性的事情、更复杂的事情、更有趣的事情。你想要学习:
*事关紧要的模式 *何时使用某个模式,为何使用该模式 *如何在自己的设计中马上采用这些模式 *何时不该使用模式(如何避免对模式过度狂热) *模式是基于哪些面向对象设计原则而设计出来的
更重要的是,你在学习设计模式的过程中不会感到昏昏欲睡。如果你曾经读过任何一本Head First系列书籍,就知道你能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地工作。本书的编写运用了许多最新的研究,包括神经生物学、认知科学,以及学习理论,这使得这本书能将这些设计模式深深地烙在你的脑海中,不容易被遗忘。你将更擅长于解决软件设计中的问,并能够和你的团队成员用模式的术语沟通。 Eric Freeman和Elisabeth Freeman是作家、讲师,以及技术顾问。原本在迪士尼公司领导了四年的数字媒体,以及Internet的开发,后来,他们将这些经验应用在他们自己的媒体中,包括本书。Eric具有耶鲁大学的计算机科学博士学位,Elisabeth具有耶鲁大学的计算机科学硕士学位。 Kathy Sierra(javaranch.com的创始者)和 Bert Bates是畅销的Head First系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。
“我昨天收到了这本书后就开始读……我简直欲罢不能。这真是太酷了!不但有趣,涵盖面广,而且切中要点。这本书让我感到印象深刻。” —-Erich Gamma, IBM 杰出工程师、《设计模式》作者之一 “我感到读这本书的效果等同于读一千磅重的同类书的效果。” —-Ward Cunningham, Wiki 发明者、 Hillside Group 创始人 “本书趋近完美,因为它在提供专业知识的同时,仍然具有相当高的可读性。口吻权威、阅读轻松。” —-David Gelernter,耶鲁大学计算机科学系教授 “这是我阅读过的最有趣且最聪明的软件设计书籍之一。” —-Aaron LaBerge, ESPN.com 技术副主席
本书荣获2005年第十五届Jolt通用类图书震撼大奖。
《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。 前言先介绍这本书的用法; 第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。 最后三章比较特别。 第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词), 第13章介绍如何进一步学习设计模式,如何发觉新的设计模式等主题, 至于第14章则很快地浏览尚未介绍的设计模式,包括Bridge、Builder、Chain of Responsibility、Flyweight、Interpreter、Mediator、Memento、Prototype,Visitor。 第1章还介绍了四个○○基本概念(抽象、封装、继承、多态), 而第1章到第9章也陆续介绍了九个○○原则(Principle)。 千万不要轻视这些○○原则,因为每个设计模式背后都包含了几个○○原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到○○原则,以方便判断取舍。可以这么说:○○原则是我们的目标,而设计模式是我们的做法。
作者简介 · · · · · ·
Eric Freeman
Eric是一个计算机科学家,热衷于软件架构和媒体。 他刚刚花了四年的时间在一个梦寐以求的工作上:在迪士尼指导Internet宽带与无线应用。现在,他回到写作的岗位上,用Java和Mac创造很酷的软件。 在90年代,Eric和David Gelernter一起花了大量的时间,寻找Desktop metaphor的替代品。(他们“仍然”在问:我干嘛不得不给计算机文件取个名字)。也因为这样的研究,Eric在1997年获得耶鲁大学的博士学位。他也与他人一同创立了Mirror Worlds Technologies公司(已经被收购),将他的论文内容商业化,创建了一套软件Lifestreams。 以前,Eric为网络和超级计算机写软件,你可能通过《JavaSpaces Principles Patterns and Practice》这本书得知他的名号。他曾在Thinking Machine CM-5上实现了元组空间系统(tuple-space system),也在80年代末期为NASA创建了第一个Internet信息系统,他为此深感自豪。 Eric目前住在圣达菲附近的沙漠中,当他不写书或代码时,他总是花更多时间摆弄他的家庭影院,而不是观看影片,他利用空档时间试着修复80年代的经典视频游戏Dragon Lair。他也不介意在晚上兼差当个电音DJ。 给他的E-mail可以写到[email protected],你也可以去参观他的Blog,网址在http://www.ericfreeman.com。
Elisabeth Freeman
Elisabeth是作者、软件开发人员及数字艺术家。她很早就开始进行Internet相关的研究,也是Ada Project的共同发起人(Ada Project是一个针对在计算机界工作的女性而设计的网站,曾获得大奖,现在已经并入ACM)。最近她带领迪士尼的数字媒体研发力量与他人共同发明了一个名为Motion的内容系统,此系统每天传送巨量的数字内容给迪士尼、ESPN及Movies.com的用户。 Elisabeth本质上是一个计算机科学家,拥有耶鲁大学和印第安那大学的计算机科学硕士学位。她的工作领域很广,包括视觉语言、RSS内容整合与Internet系统。 她也很积极提倡女性从事计算机工作。今天,你可以发现她在她的Mac上使用Java或Cocoa,但是其实,她最希望的是全世界都使用Scheme。从小在苏格兰长大,Elisabeth喜欢在大自然踏青及户外活动。一旦她在户外,相机总是不离手。她热爱骑单车,是个素食主义者,也很喜欢动物。 她的电子邮件信箱是[email protected],你可以发电子邮件给她。 Elisabeth is an author,software developer and digital artist.She’s been involved with the Internet since the early days,having co-founded The Ada Project (TAP),an award winning web site for women in computing now adopted by the ACM.More recently Elisabeth lead research and development efforts in digital media at the Walt Disney Company where she co-invented Motion,a content system that delivers terabytes of video every day to Disney,ESPN and Movies.com users. Elisabeth is a computer scientist at heart and holds graduate degrees in Computer Science from Yale University and Indiana University.She’s worked in a variety of areas including visual languages,RSS syndication and Inter net systems.She’s also been an active advocate for women in Computing,developing programs that encourage women to enter the field. These days you’ll find her sipping some Java or Cocoa on her Mac,although she dreams of a day when the whole world is using Scheme. Elisabeth has loved hiking and the outdoors since her days growing up in Scotland. When she’s outdoors her camera is never far.She’s also an avid cyclist,vegetarian and animal lover. You can send her email at [email protected].
Kathy Sierra
Kathy自从开始设计游戏以来(她为Virgin、MGM、Amblin等都编写过游戏),一直对学习理论很感兴趣。Head First系列的大多数格式都出自她的手,具体来说,都是她在为UCLA Extension(加利福尼亚大学洛杉矶分校)的“Entertain ment Studies”研究项目教授“New Media Authoring”(新媒体创作)课程时完成的。 最近,她成为Sun公司的一名高级培训人员,负责教Sun的Java讲师如何讲授最新的Java技术,并参与开发了多个Sun的认证考试,其中就包括SCBCD考试。与Bert Bates一道,她积极地使用Head First概念来教成千上万的开发人员。她还是世界上最大的Java群体网站javeranch.com的创始人之一,这家网站赢得了2003年和2004年《软件开发》杂志生产力大奖。有时你还会看到她在Java Jam Geek Cruise(geekcruises.com)给学生上Java认证课程。 她最近从加州搬到了科罗拉多,在这里,她得学习一些新的词汇,包括“刨冰机”、“羊绒大衣”(译注),但是在这里的字典里找不到闪电两个字。喜欢的事:跑步、滑雪、滑板、和她养的冰岛马玩、以及怪力乱神的玩意儿。不喜欢:Entropy(混乱)。 你可以在javaranch.com找到她,偶而她也会出现在java.net的blog中。写给她的信可以寄到[email protected]。 译注: 加州会打雷,科罗拉多州会下雪。
Kathy从开始设计游戏(她为Virgin、MGM和Amblin等都编写过游戏)和开发AI应用以来,一直对学习理论很感兴趣。Head First系列的大多数格式都出自她之手,具体说来,都是她为UCLA Extension(加利福尼亚大学洛杉矶分校)的“EntertainmentaStudies”研究项目讲授“NewaMedia Interactivity”(新媒体交互)课程时完成的。最近,她成为Sun Microsystems公司的一名高级培训人员,负责教Sun的Java讲师如何讲授最新的Java技术,并参与开发了多个Sun的认证考试,其中就包括SCWCD考试。她与Bert Bates一道积极地使用Head First概念培训了成千上万的开发人员。她还是世界上最大的Java群体网站javaranch.com的创始人之一,这家网站赢得了2003和2004年《软件开发》杂志生产力大奖。她的爱好包括跑步、滑雪、骑马、玩滑板,还有超自然科学。 Kathy has been interested in learning theory since her days as a game designer (she wrote games for Virgin,MGM,and Amblin’).She developed much of the Head First format while teaching New Media Authoring for UCLA Extension’s Entertainment Studies program. More recently,she’s been a master trainer for Sun Microsystems,teaching Sun’s Java instructors how to teach the latest Java technologies,and developing several of Sun’s certification exams.Together with Bert Bates,she has been actively using the Head First concepts to teach throusands of developers.Kathy is the founder of javaranch.com,which won a 2003 and 2004 Software Development magazine Jolt Cola Productivity Award. You might catch her teaching Java on the Java Jam Geek Cruise (geekcruises.com). She recently moved from California to Colorado,where she’s had to learn new words like,“ice scraper” and “fleece”,but the lightning there is fantastic. Likes:running,skiing,skateboarding,playing with her Icelandic horse,and weird science.Dislikes:entropy. You can find her on javaranch,or occasionally blogging on java.net.Write to her at [email protected].
Bert Bates
Bert很早就是一位软件开发者和建构师,不过由于在人工智能领域有近十年的经历,使得他对学习理论和基于技术的培训发生了兴趣。从那以后,他一直在教客户学习编程。最近,他成为Sun的Java认证考试开发小组的一员。 在他软件生涯的最初十年,他全世界游历,向Radio New Zealand、Weather Channel和Arts& Entertaininent Network(A&E)这样一些客户提供帮助。他最得意的项目是为Union Pacific Railroad构建了一个全轨系统仿真应用。 长久以来,Bert一直是无可救药的围棋玩家,玩围棋的时间已经长得超乎想象。他的吉他弹得不错,现在更意图染指Banjo(五弦琴或称斑鸠琴)。 你可以在Javaranch.com找到他,或者在IGS go Server上找到他。你也可以通过 [email protected]给他写信。
Bert很早就是一位软件开发者和建构师,不过由于在人工智能领域有近十年的经历,使他对学习理论和基于技术的培训发生了兴趣。在他软件生涯的最初十年,他在全世界游历,为诸如Radio New Zealand、Weather Channel和Arts & Entertainment Network (A & E)之类诸多客户提供帮助。他现在是Sun的Java证书考试开发小组中的一员,参与开发了许多证书考试,其中就包括新的SCWCD考试。 Bert可以长时间地玩go游戏,无可救药地上了瘾,而且为go程序投入了很多精力。最后,还是Java语言的影响力让他终于罢手。他是一个不错的吉他手,现在正在努力学五弦琴。最近他买了一匹冰岛马,这也是他培训生涯中的一个新体验…… Bert is a long-time software developer and architect,but a decade-long stint in artificial intelligence drove his interest in learning theory and technology-based training.He’s been helping clients becoming better programmers ever since.Recently,he’s been heading up the development team for several of Sun’s Java Certification exams. He spent the first decade of his software career travelling the world to help broadcast clients like Radio New Zealand, the Weather Channel,and the Arts & Entertainment Network (A & E).One of his all-time favorite projects was building a full rail system simulation for Union Pacific Railroad. Bert is a long-time,hopelessly addicted go player, and has been working on a go program for way too long. He’s a fair guitar player and is now trying his hand at banjo. Look for him on javaranch,on the IGS go server,or you can write to him at [email protected].
下载链接:
城通网盘(访问密码:4184)