文档章节

23个设计模式的理解

gavin_jin
 gavin_jin
发布于 2012/11/11 12:29
字数 1190
阅读 380
收藏 37

23个设计模式是23个设计过程中经常重复出现的23种问题,以及如何依据OOP设计原则更好地解决这些问题。作为OOP新手,一种很好的理解方式就是把23个设计模式与23个具体问题对应,本文尝试为每种模式找到一个最贴切、最自然的例子。
一、创建型模式
1、抽象工厂Abstract Factory
全球连锁的披萨店,在不同城市添加不同口味的调味料,厨师不用管调味料的配方,只管向当地调料厂购买,加入披萨。
2、生成器Builder
金融公司根据客户情况定制投资策略,录入个人信息,根据客户要求价位的不同,推荐不同档次的产品。
3、工厂方法Factory Method
全国连锁奶茶店,客户点珍珠奶茶,香港分店给港式珍珠奶茶,台湾分店给台式珍珠奶茶。
4、原型Prototype
开会前把某数据表格复印很多份给与会人员,每个人都可以在自己的表格上修改。
5、单例Singleton
把Windows操作系统注册表当成一个对象,每次修改都有可能造成全局影响,所有进程都必须同步地访问注册表对象。

二、结构型模式
6、适配器Adapter
某个打印机的驱动程序原来运行在Linux中,现在需要在Windows环境下使用打印机,绝不需要完全重写驱动程序。
7、桥接Bridge
长虹和创维电视为了统一遥控器,都遵循遥控器厂家制定的遥控平台模块,这样遥控器厂家和电视厂家都可以各自扩展业务。
8、组合Composite
互联网由很多网络节点互联而成,这些节点可以是一台电脑,也可以是多台电脑组成的网络。
9、装饰Decorator
土豆肉丝和土豆肉丝加辣是同一道菜,土豆肉丝加辣聚合土豆肉丝,只是在出锅前加些辣椒。
10、外观Facade
输入网址就给我打开网页,不用去管DNS解析、路由、传输、解释这些细节,留给用户的接口很简单。
11、享元Flyweight
花园种了很多植物,每天都要给每个植物单独浇水,雇佣一个钟点工,每天只需要告诉他给所有植物浇水。
12、代理Proxy
远程桌面控制网络上另一个计算机,就像在实际坐在那台电脑前一样,实际上操作的是一个代理,它在内部完成网络通信。

三、行为模式
13、职责链Chain of responsibility
打电话给客服咨询一个技术难题,通常他是回答不了的,他们自己在公司内部找到一个能回答我问题的人与我交谈。
14、命令Command
所有数据库处理请求都由事务管理模块统一接收和分发,同时会记录这些操作,可以在以后取消操作或者进行灾难恢复。
15、解释器Interpreter
正则表达式匹配工具,先解释正则表达式表示的文法,在查询匹配。
16、迭代器Iterator
很自然的想到C++语言中支持各种容器的迭代器,可以遍历范围集合中每个元素,而不管集合的容器是什么。
17、中介者Mediator
买房是件很麻烦的事,要和很多对象反复沟通,包括业主、物业公司、国土局、档案局....,有了房屋中介,所有人只和他打交道。
18、备忘录Memento
打游戏别忘了存档,管理存档的对象就是备忘录。
19、观察者Observer
想了解名人的最新动态吗,关注他的微博吧,他会定期把信息推送给所有的粉丝。
20、状态State
有限状态机,能够描述很多现实生活中依赖流程的事物,把每个状态作为一个对象封装管理,不同状态下的行为各有不同。
21、策略Strategy
同一首歌曲可以有美声、民族、流行等多种唱法,录下各种唱法,想听其中一种时拿出一张盘点击播放即可。
22、模板方法Template Method
网上找来的菜谱,照着做就能做好菜了,还可以根据个人喜好调整中间某个环节。
23、访问者Visitor
想喝加了芥末的咖啡,但咖啡店没有,有个临时工服务员会做,于是订单就临时交给了这个服务员,并不需要改动原菜单。

本文转载自:http://blog.csdn.net/thinkingoo/article/details/7357014

共有 人打赏支持
gavin_jin
粉丝 26
博文 109
码字总数 115950
作品 0
海淀
技术主管
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
0
0
系统架构技能之设计模式-单件模式

一、开篇 其实我本来不是打算把系统架构中的一些设计模式单独抽出来讲解的,因为很多的好朋友也比较关注这方面的内容,所以我想通过我理解及平时项目中应用到的一 些常见的设计模式,拿出来给...

wbf961127
2017/11/12
0
0
设计模式什么的哪有那么神秘 ----第一集 一些吐槽和重构的韵味

一日面试, ...... Hr:你对设计模式熟悉吗? 应聘者A:我了解常用的设计模式,平时经常使用工厂模式和单例模式.而且我也看过一些讲23种设计模式的书.其他不常用的模式用的不是太熟. Hr:你用过外观...

架构梦想
2013/08/04
0
7
设计模式什么的哪有那么神秘 --开篇吐槽

我最近重新看了一遍23种设计模式,颇有感受,工作3年多了,第一次接触是在大学的时候.那个时候没什么实际项目经验,感觉设计模式学的仅仅是理论的上的存在.最近重新看过.结合3年实际的经验.感觉比...

架构梦想
2013/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaFX WebView概述,很强大,内置了类似Electron的功能

来自 Murali Billa JavaFX技术人员的主要成员 在本博客中,我们将了解JavaFX如何呈现网页及其主要的组件 - 即WebView JavaFX是: 用于创建和交付桌面应用程序的软件平台,以及可以在各种设备...

GuoMengyue
17分钟前
3
0
数据库监控系统小实现1

需求:通过java 去调取python 去目标数据库采集信息,然后插入到数据库,由前台UI显示出来,从而达到监控目的。 设计:通过java的Runtime.getRuntime().exec(args1)方法去调用python脚本,j...

hnairdb
20分钟前
0
0
spring boot logback-spring 配置 日志分文件

因为更规规范化,想将日志分文异常类型,分别存储起来,方便以后查询问题。 以下是 logback-spring.xml 配置: <?xml version="1.0" encoding="UTF-8"?><configuration scan="true"> ...

诺岚
21分钟前
0
0
OSChina 周三乱弹 —— 这下回去要被老婆挠死

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Passenger的单曲《Let Her Go》 《The Importance of Being Idle》-Noel Gallagher/It's a Cover Up 手机党少年们想听歌,请使...

小小编辑
40分钟前
453
18
RedHat已更改其开源许可规则

对于编程圈外的人来说,软件许可证似乎并不重要,但是,在开源领域,开源许可是非常重要的。 因此,领先的Linux公司Red Hat宣布了一件大事,所有新的由Red Hat发起的使用GNU通用公共许可证(...

linuxCool
53分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部