图书前言

前言

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

设计模式是前人经验的积累,它让我们的软件变得更像一个艺术品,而不是一堆难以维护和重用的代码,设计模式已经成功地应用于众多软件设计中,并且成为一名优秀的面向对象软件开发人员所必须掌握的知识和技能。本书编者在十多年的软件开发和计算机教育教学工作中积累了丰富的设计模式使用经验和教学经验,也深刻体会到学习设计模式的重要性。目前,国内外越来越多的高校在计算机及软件工程相关专业的本科生和研究生教学中开设了软件体系结构、面向对象分析与设计等课程,而设计模式是这些课程的核心组成部分; 有的学校还将设计模式作为一门单独的课程来开设。此外,很多软件培训机构在软件工程师培训课程中也包含了设计模式的相关内容,在各类计算机考试和企业招聘笔试中,设计模式相关考题也占据了一定的比例。为此,编写一本适合教学所需的设计模式教材是一件非常有意义的事情。编者在成功完成《设计模式》《设计模式实训教程》等书籍的基础上,针对目前部分高校对C#设计模式教材的需求,特编写了本书。

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

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

第2部分包含第3~8章,介绍6种常用的

创建型设计模式,分别是简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。

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

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

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

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

本书提供了完整的设计模式及应用实例的UML结构图(类图)和C#实现代码,所有类图均严格按照UML 2.X标准绘制,所有代码均在Microsoft Visual Studio 2010中通过测试且运行无误。本书提供了完整的配套教学资料,包括所有实例的源代码、PPT格式的电子课件、课后习题和模拟试题答案等,这些教学资料形成一个完整的体系,为教学和学习提供便利。

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

本书在第一版的基础上进行了修订和完善,修改了第一版中存在的一些问题,并在附录中增加了一套全新的模拟试题。在此,向所有对本书第一版提出宝贵意见和建议的同仁们表示感谢。

由于时间仓促、编者学识有限,虽经多次审阅与校稿,但书中仍可能存在不足和疏漏之处,恳请广大读者将意见和建议通过清华大学出版社反馈给我们。

编者

2017年10月