图书前言

前言

随着面向对象技术的发展和广泛应用,设计模式已成为面向对象开发人员必备的技能之一。无论是面向对象的初学者还是具有一定开发经验的程序员,都可以通过对设计模式的学习和应用加深对面向对象思想的理解,开发出可扩展性和复用性更好的软件。笔者在多年的面向对象教学和实践开发中也深刻体会到学习设计模式的意义,在教授C++、Java、C#等课程的同时结合一些常用的设计模式可以让学生更好地理解面向对象的特性、接口的作用、合成复用的优点等原本很抽象、较难理解的思想和概念。正如笔者经常和学生以及学员们说的: 掌握设计模式后,就会发现面向对象设计是一门艺术,有些模式的巧妙,也一定会授益于GoF所做的工作。

  当前,在很多高校的软件工程专业的本科或研究生培养方案中都设置了面向对象分析与设计、软件设计模式、软件体系结构等课程,不少企业也开始注重对员工面向对象编程思想和设计模式等的培训,部分软件培训机构也将设计模式作为软件工程师培训课程的基本内容之一。在我国较为权威的全国计算机技术与软件专业技术资格(水平)考试的系统架构设计师(高级)、软件设计师(中级)等级别的考试中,关于设计模式的试题也占据一定的比例,近几年软件设计师下午题中固定有一道15分的设计模式大题,2009年开考的系统架构设计师考试中也有不少设计模式相关试题,笔者也有幸以湖南省第一、全国第四的成绩成为第一批国家认证系统架构设计师。

  近年来,笔者一直承担中南大学软件学院Java实训、软件体系结构、设计模式等课程的教学任务,同时也给一些软件企业提供软件设计模式、重构、统一建模语言(UML)等课程的企业内训,并主持和参与一些软件项目的开发工作。从这些教学和开发工作中,笔者发现通过实例,尤其是结合软件项目实例是学习和掌握设计模式的最佳途径,而目前已出版的很多设计模式书籍大多通过一些生活实例来引入和学习设计模式,这样虽然可以让读者很轻松地学习,但很难做到深入理解和熟练运用。此外,已有的大部分设计模式相关书籍都缺少相应的练习来帮助读者加深对所学模式的理解和掌握,有些书中虽有一些练习,但数量不多且针对性不强。因此,笔者一直想将这些年积累下来的一些实例整理成册,于是有了本书的诞生。

  1. 本书特色

本书是国内第一本设计模式实训教程和习题集,通过大量项目实例让读者加深对GoF设计模式的理解,在学习模式的同时掌握如何在实际软件开发中运用模式,并通过大量练习来强化对设计模式的理解和掌握。笔者整理了这些年在设计模式教学和企业项目开发经验中积累的设计模式实训素材,同时参考了大量已有的设计模式书籍和网站资料,广泛收集各类设计模式实例和试题,包括历年全国计算机技术与软件专业技术资格(水平)考试试题、知名软件公司招聘面试和笔试题、国内外高校设计模式课程考试试题等,同时结合实际项目设计了大量练习题,包括选择题、模式代码填空题、综合分析题等多种题型,让读者在学习设计模式之余检验学习效果并结合实例来巩固所学知识。收集和整理的过程虽然很辛苦,也很耗时,但若能为我国软件事业的发展和面向对象技术的推广尽一份绵薄之力,所有付出都是值得的。

  为了让设计模式的初学者也能够看懂本教程,在本书中的每一章前面都包含了知识讲解单元,让读者可以较快了解模式的基本知识,再结合后续实例进行深入学习。在本书中,针对每一个模式都提供了一个完整的实例,包括UML类图、源代码和实例分析,且每个模式都对应多道选择题、一道代码填空题和一道综合分析题,所有练习都提供了参考答案,部分综合分析题还提供了完整代码,本书所有类图均严格按照UML 2.X标准绘制,所有代码均在JDK 1.8环境下通过测试且运行无误。

  2. 本书内容

本书分7章: 第1章介绍UML类图并通过实训练习掌握如何阅读和绘制类图,学习使用类图来构造软件的静态模型; 第2章介绍7个常用的面向对象设计原则,结合实例学习如何使用这些原则对系统进行重构; 第3章介绍6个创建型设计模式,第4章介绍7个结构型设计模式,第5章介绍11个行为型设计模式,从第3~5章结合实例和大量实训练习来进行学习; 第6章对设计模式的相关知识进行了补充,提供了一些模式联用解决方案,通过两个综合实例来学习如何在应用开发中使用设计模式,同时提供了一些企业招聘过程中出现的面试和笔试试题; 第7章提供了两套设计模式综合模拟试题。附录部分提供了相应的参考答案和评分标准,用于考查读者对所学知识的掌握程度。本书所有源代码和类图都可通过清华大学出版社网站(http://www.tup.tsinghua.edu.cn/)下载。

  3. 目标读者

  本书既可作为各类高等院校计算机和软件相关专业本专科生和研究生设计模式课程教材和参考用书,也可作为全国计算机技术与软件专业技术资格(水平)考试辅导用书和软件架构师、软件工程师等开发人员的参考用书,还可以作为企业内训、设计模式爱好者和自学者的习题集和实训教程以及就业之前的复习用书。

  4. 感谢

  由于本书是一本实训教程和实战手册,涉及大量的实例及分析,这些实例的收集、整理和设计工作离不开众多同事和学生的帮助,在此一并表示感谢。感谢中南大学软件学院胡志刚教授在百忙之中抽出宝贵时间对本书进行细致的审校,感谢中南大学软件学院杨柳、郑美光和中南大学信息科学与工程学院郭克华、王斌等老师在本书写作过程中提出的宝贵意见和建议。在本书的编写过程中作者参考和引用了国内外很多书籍和网站的相关内容,个别实例和练习的初始原型也来源于网络,由于涉及的网站和网页太多,没有一一列举,在此一并对相关作者予以感谢。最后特别感谢清华大学出版社魏江江主任为本书出版所作出的努力。

  由于时间仓促、学识有限,书中不足和疏漏之处在所难免,恳请广大读者将意见和建议通过清华大学出版社反馈给笔者,以便在后续版本中不断改进和完善。

刘伟

2017年8月1日于长沙岳麓山下