
前言
相信软件开发工作者都听过一句名言:“不要重复造轮子。”从某种意义上讲,程序中如果出现大量重复的代码,则意味着这是一个缺乏设计的软件项目。面向对象编程语言的初学者写代码时往往是“东一榔头、西一棒槌”,想到哪里写到哪里,缺乏软件架构的全局观,最终造成系统中充斥大量的冗余代码,缺乏模块化的设计,更谈不上代码的复用性。代码量大并不能代表系统功能多么完备,更不能代表程序员多么努力与优秀,反之,作为有思想高度的开发者一定要培养“偷懒”意识,想方设法以最少的代码量实现最强的功能,这样才是优秀的设计。
设计模式主要研究的是“变”与“不变”,以及如何将它们分离、解耦、组装,将其中“不变”的部分沉淀下来,避免“重复造轮子”,而对于“变”的部分则可以用抽象化、多态化等方式,增强软件的兼容性、可扩展性。如果将编写代码比喻成建筑施工,那么设计模式就像是建筑设计。这就像乐高积木的设计理念一样,圆形点阵式的接口具有极强的兼容性,能够让任意组件自由拼装、组合,形成一个全新的物件。
有一定项目经验的开发人员都会有这样的体会,随着需求的增加与变动,软件项目版本不断升级,维护也变得越来越难,修改或添加一个很简单的功能往往要耗费大量的时间与精力,牵一发而动全身,严重时甚至会造成整个系统的崩溃。优秀的系统不单单在于其功能有多么强大,更应该将各个模块划分清楚,并且拥有一套完备的框架,像开放式平台一样兼容对各种插件的扩展,让功能变动或新增变得异常简单,一劳永逸,这离不开对各种设计模式的合理运用。
设计模式并不局限于某种特定的编程语言,它是从更加宏观的思想高度上展开的一种格局观,是一套基于前人经验总结出的软件设计指导思想,所以很多初学者觉得设计模式晦涩难懂,无从下手。本书秉承简约与现实的风格,帮助读者进行一场思想升华,将各种概念与理论化繁为简,以通俗易懂、更贴近生活的实例与源码详细解析每种模式的结构与机理。此外,文中配有大量生动形象的漫画与图表,幽默轻松的风格使原本刻板的知识鲜活起来,让读者能在轻松愉悦的学习氛围中领悟设计模式的思想真谛。
内容导读
本书共有25章,包含从面向对象基础概念及特性到创建型、结构型、行为型设计模式的具体分析讲解,再到软件设计原则的归纳总结,由浅入深、由表及里。

本书作者
刘韬,笔名凸凹,现居西安,曾就读于西安电子科技大学和澳大利亚查理斯杜大学,先后在软通动力、中软国际、汇丰软件、艾默生科技资源等国内外知名企业承担软件设计及开发工作,至今已有15余年工作经验,主要研究方向为软件设计、数据库设计、Web应用程序设计、UI设计等,技术栈主要包括Java、C#、Spring框架、Micro Service架构及组件、Linux、Oracle、MySQL、JavaScript、JQuery、Angular等。
由于书中涉及知识点较多,难免有疏漏之处,欢迎广大读者批评、指正,并多提宝贵意见。作者的反馈邮箱为liewtao@vip.qq.com,本书责任编辑联系邮箱为wuxiaoyan@ptpress.com.cn。