设计模式

一. 创建型设计模式

1.简单工厂:

简介:简单工厂为用户提供了一个实例,而隐藏了具体的实例化逻辑。一维:实例

使用时机:当你创建一个对象,并非简单拷贝赋值,牵扯很多其他逻辑,应该把它放到一个专门的工厂。在C++中就是将new语句的逻辑对象到一个实例中,扔到一个统一的静态函数中。

 

2.工厂方法:

简介:一种将实例逻辑委托给子类的方法。二维:实例加方法

使用时机:当一个类中又一些通用的处理,但要等到运行时才决定用哪个子类的实现。

 

3.抽象工厂:

简介:工厂们的工厂,一家管理各自独立却又依赖的一批工厂,而不关心各自的细节。 三维:实例加方法加依赖关系。

使用时机:当遇到不那么简单的创建逻辑,伴随着与之相关的依赖关系。

 

4.建造者(生成器):

简介:允许你创建不同风格的对象,同时避免构造器污染。

使用时机:构造函数有很多参数的时候。

本质:构造函数的参数列表方法化

 

5.原型

简介:通过克隆,基于已有的对象来创建对象

使用时机:当需要的对象,与已存在的对象非常相似,或者创建过程比克隆一下更费时。

本质:拷贝构造函数跟拷贝赋值函数。

 

6单例

简介:确保一个特定类的一个对象,只能创建一次。

本质:getInstance

 

二:结构型设计模式

1.适配器

简介:包装一个对象,让本不兼容其他类的该对象变的兼容。

本质:很多问题都可以用在中间加一层的方式解决。

 

2.桥接

简介:优先考虑组合而非继承,将实现细节从层次结构中,剥离并独立成另一套层次结构

本质:桥接模式本质上就是一种拆分。

 

3.组合

简介:组合模式让客户用统一的方式对待每个对立的对象

本质:多态特性的体现。容器存储的接口类型。

 

4.装饰

简介:装饰模式将对象包装在装饰类对象中,从而在运行时动态改变该对象的行为

本质:依赖父类接口

 

5.外观

简介:外观模式为复杂的子系统提供了简单的接口。

本质:封装

 

6.享元

简介:通常以最小的存储用量或者计算成本为代价,共享给尽可能多的相似对象

本质:享元模式的本质就是最基本的缓存思想,无论是计算机体系结构中的cache还是操作系统中的page table,都是这种思想的体现。在程序设计中,实现这一思想,最常用的数据结构就是哈希表,key存在了,直接取走,不存在,创建一个。以此节省重复的创建与冗余的空间。 

 

7.代理

简介:使用代理模式,一个类会表现出另一个类的功能

本质:加一层,兼容

 

三.行为型设计模式

1.责任链

简介:它有助于建立一条对象链,请求会从一端开始,依次访问对象,直到找到合适的处理程序。

本质:对象的单链表实现 + 对单链表的迭代。

 

2.命令

简介:允许你将操作封装在对象中,核心思想分离客户与接收者

本质:对消息协议的一种抽象,用的手法是回调。

 

3.迭代器

简介:它呈现 了一种访问对象元素,却不暴露底层方法的方式

本质:c++的迭代器

 

4.中介者

简介:中介者模式增加了一个第三方对象来控制两个对象间的交互

本质:也说是对消息协议的一种抽象,并同样借用了回调的手段。

 

5.备忘录

简介:备忘录模式会抓取并存储对象的当前状态,之后可便捷的恢复出来

本质:备忘录模式,说白了就是对缓存这个行为的对象化,我们通常享缓存一个状态,会把这个状态存到容器中(哈希表,map等),并用某个key(如时间戳)来标定,但当你要实现的,是一个颇具规模,多种状态缓存,以及各种“存-取”穿插的时候,将状态抽象成一个对象,就显得十分必要了。

 

6.观察者

简介:定义对象间的依赖关系,以至于一个对象的状态改变,依赖它的对象们都会收到通知。

本质:又称为发布-订阅模式,本质是注入+回调,订阅是注入的时机,发布是回调的时机,观察是注入的时机,通知是回调的时机。

 

7.访问者

简介:访问者模式允许你为对象们增加更多的操作,却不必修改它们

本质:本质依然是注入-回调模式

 

8.策略

简介:策略模式允许你根据实际情况切换算法或策略

本质:依然是注入+多态

 

9.状态

简介:改变状态的同时,也改变类的行为

本质:依然是注入+多态

 

10.模板方法

简介:模板方法定义了如何执行某种算法的框架,但将具体实现延迟到子类。

本质:多态的集中体现

 

 

参考文档:https://segmentfault.com/a/1190000010706695

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值