图书前言

前言

我们收集整理并分析了近十年来的软件工程师考试题、各大信息技术类公司的Java面试题,发现设计模式是必考的内容,而且越来越受到重视。事实上,稳健的软件设计是软件项目开发过程中至关重要的环节,而且,面向对象技术的广泛应用促成了团队合作设计的热潮,没有好的设计理念和好的设计模式,软件设计必然困难重重。

我校(大连海事大学)的电子商务专业自2003年开设以来,一直坚持电子商务信息技术类方向,以电子商务“信息流”建设类课程为重点,历届毕业生在电子商务、软件开发、数据分析、商务智能等领域都取得了良好的业绩并展示了广阔的发展空间。为了帮助学生奠定坚实的面向对象开发基础,掌握面向对象的核心理念,理解并灵活运用设计模式,也为了学生们未来能更好地从事电子商务系统开发、平台建设等相关工作,我们开设了“设计模式”这门课程,并以Java语言为编程工具。在学习“设计模式”这门课程之前,学生已经掌握了Java基础,具备了数据结构与算法的知识,但是,对于软件开发来说,仅仅具备这些基础还是远远不够的,只能处在“编写简单逻辑代码+复制粘贴”层次。设计模式的学习其实是软件开发人员必要的“内功修炼”环节,通过对设计模式的灵活运用才能开发出具有更好的可扩展性和复用性的软件,使得软件开发过程更具艺术性,达到“出神入化”的境界。

那么什么是设计模式呢?它是由软件界的前辈们(The Gang of Four即Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides,简称GoF)总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。1995年,GoF将收集和整理好的23种设计模式汇编成Design Patterns: Elements of Reusable ObjectOriented Software(《设计模式: 可复用面向对象软件的基础》)一书,该书的出版标志着设计模式正式成为面向对象软件工程的一个重要研究分支。

目前已出版的“设计模式”类书籍大都囊括了23种设计模式,内容庞杂、篇幅很大,而且很多书中缺少与当前电子商务系统或其他软件系统开发相关的实例。考虑到学生的专业背景以及一学期的授课时数,结合专业教师多年的教学及软件开发经验,我们对设计模式进行了筛选,选取了常用的17种设计模式进行讲解,对每一种设计模式都给出了一个基本示例和一个在电子商务系统开发中的应用示例。同时为了让读者更好地检验对知识的理解,每章都配有习题。本书具体结构如下:

本书分为4个部分,共23章。

第一部分设计模式基础: 包含第1章至第3章,主要介绍设计模式基本概念、UML类图、面向对象的设计原则等内容,为后续设计模式的学习奠定基础。

第二部分创建型设计模式: 包含第4章至第9章,介绍了工厂方法模式、抽象工厂模式、建造者模式、单例模式和原型模式,并对创建型模式进行了总结。

第三部分结构型设计模式: 包含第10章至第16章,介绍了装饰者模式、适配器模式、享元模式、代理模式、桥接模式和组合模式,并对结构型模式进行了总结。

第四部分行为型设计模式: 包含第17章至第23章,介绍了观察者模式、策略模式、责任链模式、状态模式、命令模式和中介者模式,并对行为型模式进行了总结。

最后的附录部分给出了各章的习题答案。

简单、通俗、易懂、实用,但又不肤浅,这是本书的最大特色。本书可作为高等院校电子商务、信息管理、计算机、软件工程等相关专业师生的教材和参考用书,也是设计模式自学者的理想用书。

本书代码和绘图工作量巨大,无数个日子的“挑灯夜战”常让作者心力交瘁、痛苦不堪,甚至屡屡产生放弃写作的念头,每当这个时候,作者就用刘欢的那首“在路上”鼓励自己:

那一天

我不得已上路

为不安分的心

为自尊的生存

为自我的证明

路上的辛酸已融进我的眼睛

心灵的困境已化作我的坚定

在路上用我心灵的呼声

在路上只为伴着我的人

在路上是我生命的远行

在路上只为温暖我的人

谨以这首歌献给读者朋友们,我们在路上,无论多么艰难,都要有始有终、坚定地走完这条路。前行,不放弃,为了陪伴我们、温暖我们的人!

在本书写作过程中大连海事大学电子商务专业2012级的方雅婧、陈萍萍、陈军年、胡馨、雷雨佳,电子商务专业2013级的张孝帅、刘佳晨,电子商务专业2014级的谷芳雪等同学做了一些资料收集整理、类图绘制等工作,在此表示衷心的感谢!同时也感谢清华大学出版社工作人员为本书出版所付出的努力,他们的敬业精神和严谨的工作作风也是笔者完成这本书的动力之一。本书在写作过程中参考了大量的网络资源和书籍,也对这些资源和书籍的提供者表示由衷的敬意和谢意!

由于时间仓促、学识有限,虽经多次审阅与校稿,但书中不足和疏漏之处难免,在此表示歉意,并恳请读者朋友们及时将改进意见反馈给作者,联系方式: yuwhlx@163.com。谢谢!

于卫红2016年1月26日