看百度技术专家如何深入研究,重复使用的代码经验——设计模式
![](https://static001.geekbang.org/infoq/9f/9f87d5f98d66c2b7bb21fa4a608b4080.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
关于设计模式
模式是从不断重复出现的事件中发现和抽象出的规律,是解决问题形成的经验总结。设计模式作为一种模式,最早应用于建筑领域,目的是在图纸上以一种结构化、可重用化的方法,获得建筑的基本要素。渐渐地,这种思想在软件领域流行起来,并获得发展,形成了软件开发的设计模式。软件设计模式被认为是一套被反复使用、多数人知晓、经过分类编目的代码设计经验的总结。最早的设计模式是由GOF在《Design Patterns:Elements of Reusable Object-Oriented Software》一书提出的, 这也被 称为经典设计模式,共有23个,分为创建型模式、行为型模式、结构型模式三类。使用设计模式的目的是为了提高代码的可重用性、让代码更容易被他人理解、系统更加可靠。
应用设计模式构建有弹性、可扩展的应用系统已成为软件人员的共识,越来越多的程序员需要掌握设计模式的内容。近年来,市场上也涌现了一些有关设计模式的书籍。这些书籍各有特点,多从生活中的示例入手,让读者对所述设计模式有一定的感性认识,然后引入设计模式概念,最后用计算机专业程序进行理性说明。通常,示例部分内容成熟。
![](https://static001.geekbang.org/infoq/76/76e3a60fc7106baffe843c6dee84297e.png)
本书内容
本书首先利用两章讲解了用到的预备知识:接口与抽象类,反射。然后从常用的23个设计模式中精选了10个进行讲解,包括2个创建型模式:工厂、生成器模式,4个行为型模式:观察者、访问者、状态、命令模式,4个结构型模式:桥接、代理、装饰器、组合模式。每个模式一般都包含以下四部分。
(1)问题的提出: 一般从生活中的一类常见事物引出待讨论的主题。
(2)模式讲解:用模式方法解决与之对应的最基本问题,归纳出角色及UML类图。
(3)深入理解模式:讲解笔者对模式的一些体会。
(4)应用探究:均是实际应用中较难的程序,进行了详细的问题分解、分析与说明。
![](https://static001.geekbang.org/infoq/61/61ab3680a6ef68fd298fd20c6e9777c7.png)
![](https://static001.geekbang.org/infoq/36/360a6d21410238a542f25211a376df4a.png)
由于篇幅限制小编,小编只在这里给大家展示目录及部分内容,有需要完整文档的程序猿(媛)可以关注文末公众号获取
本书特色
(1)示例丰富,讲解细致,有命令行程序,也有图形界面、Web程序等,涉及Java、JSP、JavaScript、Ajax 等技术。
(2)强调了语义的作用。-方面把设计模式抽象转化成日常生活中最朴实的语言;另一方面把生活中对某事物“管理”的语言转译成某设计模式。相比而言,后者更为重要。
(3)强调了反射技术的作用。对与反射技术相关的设计模式均做了详细的论述。
(4)提出了如何用接口思维巧妙实现C++标准模板库方法功能的技术手段。
学习设计模式方法
(1 )在清晰设计模式基础知识的基础上,认真实践应用探究中的每个示例,并充分分析,加以思考。
(2)学习设计模式不是一朝-夕的事,不能好高骛远。它是随着读者思维的发展而发展的,一定要在项目中亲身实践,量变引起质变,有句话说得好:“纸上得来终觉浅,绝知此事要躬行”。
(3)加强基础知识训练,如数据结构、常用算法等。基础知识牢固了,学习任何新事物都不会发慌,有信心战胜它。否则,知识学得再多,也只是空中楼阁。
(4)不要为了模式而模式,要在项目中综合考虑,统筹安排。
第1章接口与抽象类
1.1语义简单描述
1.2与框架的关系
1.3拓展研究
1.3.1柔性多态
1.3.2借鉴STL标准模板库
![](https://static001.geekbang.org/infoq/10/100453f526b9d5203eb44263581fe91f.png)
第2章反射
2.1反射的概念
2.2统一形式调用
2.3反射与配置文件
![](https://static001.geekbang.org/infoq/e7/e75c1812075d29e138830a746c99fc43.png)
第3章工厂模式
3.1问题的提出
3.2 简单工厂
3.3工厂
3.4抽象工厂,
3.5应用探究
3.6自 动选择工厂
![](https://static001.geekbang.org/infoq/75/75015aca5d6e4d7edf34cf82fda8022c.png)
第4章生成器模式
4.1问题的提出
4.2生成器模式
4.3深入理解生成器模式
4.4应用探究
![](https://static001.geekbang.org/infoq/5e/5eb663011343e19244c46518e6c99efb.png)
第5章观察者模式
5.1问题的提出
5.2观察者模式
5.3深人理解观察者模式
5.4 JDK 中的观察者设计模式
5.5应用探究
![](https://static001.geekbang.org/infoq/95/957de0dcbfc181d2e690b8e3d00a059f.png)
第6章桥接模式
6.1问题的提出
6.2 桥接模式
6.3深入理解桥接模式
6.4 应用探究
![](https://static001.geekbang.org/infoq/ea/eab7be664123cc660b8fc88a077ca832.png)
第7章代理模式
7.1问题的提出
7.2代理模式
7.3虚拟代理
7.4远程代理
7.5计数代理
7.6动态代理
![](https://static001.geekbang.org/infoq/97/972509a732cfe9616820e3bee2a7ab6c.png)
第8章状态模式
8.1问题的提出
8.2状态模式
8.3 深入理解状态模式
8.4应用探究
![](https://static001.geekbang.org/infoq/d3/d3fb6b6f7464c8a790f1dc83e38c94f9.png)
第9章访问者模式
9.1问题的提出
9.2访问者模式
9.3深入理解访问者模式
9.4应用探究
![](https://static001.geekbang.org/infoq/2c/2cfb6f3deea841159e16117dc84da885.png)
第10章命令模式
10.1问题的提出
10.2 命令模式
10.3深入理解命令模式
10.4应用探究
![](https://static001.geekbang.org/infoq/43/43c8f5d625221f053bf8aaf3388373db.png)
第11章装饰器模式
11.1问题的提出
11.2装饰器模式
11.3深入理解装饰器模式
11.4应用探究
![](https://static001.geekbang.org/infoq/1e/1e96b78ce3b52b4704e8ca07220869b8.png)
第12章组合模式
12.1问题的提出
12.2组合模式
12.3深入理解组合模式
12.4应用探究
![](https://static001.geekbang.org/infoq/01/01c293dfbdb422c62b5444d9ceb89c89.png)
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以关注下方公众号获取
![](https://static001.geekbang.org/infoq/d1/d19cd6d4ab06ea94717237a0deb2b4fe.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
![](https://static001.geekbang.org/infoq/c9/c9f9d6753f0ea692b3ab6dfb24303a19.png)
评论