图书前言

前言

设计模式和敏捷开发方法的创始人之一Erich Gamma曾说过: “设计和开发面向对象软件是非常困难的,而设计和开发可复用的面向对象软件则更加困难。”正因为如此,在软件开发过程中,有经验的设计者往往会重复使用一些他们在以前的设计工作中曾经用到的成功而又有效的解决方案,这些解决方案可以提高开发人员的开发效率与软件质量,并使得所设计的软件更加灵活,易于扩展,可复用性也更高。这些解决方案即设计模式,设计模式为实现可维护性复用而诞生,无论是面向对象编程的初学者还是有一定编程经验的程序员,都可以从设计模式的学习和使用中深入理解面向对象思想的精华,开发出可扩展性和可复用性俱佳的软件。

设计模式是前人经验的积累,它将让我们的软件变得更像一个艺术品,而不是一堆难以维护和重用的代码,它已经成功应用于众多软件设计中,是一个优秀的面向对象软件开发人员所必须掌握的知识和技能。本书编者在十多年的软件开发和计算机教育教学工作中积累了丰富的设计模式使用经验和教学经验,也深刻体会到学习设计模式的重要性。目前,国内外越来越多的高校在计算机及软件工程相关专业的本科生和研究生教学中开设了软件体系结构、面向对象分析与设计等课程,而设计模式是这些课程的核心组成部分,还有的学校将设计模式作为一门单独的课程来开设。此外,很多软件培训机构在软件工程师培训课程中也包含了设计模式相关内容,在各类计算机考试和企业招聘笔试中设计模式相关考题也占据了一定的比例。编者在过去几年中已完成多种设计模式教材的编写工作,本书将融合之前几种教材的优点,力求为广大师生提供一本内容全面、实用性强、通俗易懂的设计模式教材。

本书的目的在于让读者通过大量应用实例和习题,理论联系实际,以便更快、更好地理解和掌握每一个设计模式。全书共26章,可分为4个部分:

第1部分包含第1章和第2章,主要介绍与设计模式相关的一些基础知识,包括设计模式概述、7个常用的面向对象设计原则等内容,为后续设计模式的学习奠定基础; 

第2部分包含第3~8章,介绍6种常用的创建型设计模式,分别是简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式; 

第3部分包含第9~15章,介绍7种常用的结构型设计模式,分别是适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式; 

第4部分包含第16~26章,介绍11种常用的行为型设计模式,分别是职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。

本书结合大量项目应用实例对每一个设计模式都进行了细致的讲解。全书结构合理、条理清晰、内容丰富、讲解深入,且在每一章后面都配有大量的习题,很多习题也都基于项目实例,让读者在学完相关知识后能够更好地消化和巩固所学知识。此外,在附录中还提供了UML类图相关知识的介绍和3套设计模式模拟试题。

本书在编写过程中参考了大量已有的设计模式书籍,集各家之所长,并进行了适当的整理和扩展,将一些原本深奥并难以理解的设计思想通过简单的应用实例来解析,让读者能够轻松掌握面向对象设计思想的精髓。本书以“实例驱动教学”为整体编写原则,每一个模式的学习都基于至少一个应用实例,结合应用实例来分析和讲解每一个设计模式,力求通过最通俗易懂的方式让读者学习和理解设计模式,让读者在真实项目实例的引导下学会选择和合理运用设计模式。在设计模式讲解部分,每一章的基本结构如下:

本书提供了完整的设计模式及应用实例的UML结构图(类图)和Java实现代码,所有类图均严格按照UML 2.X标准绘制,所有代码均在Eclipse Neon v4.6.0中通过测试且运行无误。

本书提供了与内容配套的课程教学视频,并提供了完整的配套教学资料,包括所有实例的源代码、PPT格式的电子课件、课后习题和模拟试题答案等,任课教师可以通过发送邮件来获取相关教学资料。这些教学资料将形成一个完整的体系,为教学提供便利。

本书既可作为高等院校计算机及软件相关专业本科生和研究生软件设计模式、软件体系结构、面向对象分析与设计等课程教材,也可作为各软件培训机构培训教材及全国计算机技术与软件专业技术资格(水平)考试辅导教材,还可作为软件架构师、软件工程师及广大软件爱好者的自学读物和参考用书。

由于时间仓促,加之编者学识有限,虽经多次审阅与校稿,但书中不足和疏漏之处在所难免,恳请广大读者将意见和建议通过清华大学出版社反馈给我们,力求使本书精益求精,更趋完美。

编者

2018年1月