23个设计模式的理解

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
想喝加了芥末的咖啡,但咖啡店没有,有个临时工服务员会做,于是订单就临时交给了这个服务员,并不需要改动原菜单。

你可能感兴趣的:(23个设计模式)