设计模式梳理

快速回顾

类别名称应用场景例子
创建型模式Factory模式统一公用接口
AbstactFactory模式统一公用接口
Singleton模式只构建一次,每次构建只返回自己
Builder模式一步步的进行复杂对象的构建链式构造器,解决复杂对象多个属性可选择性地设置的问题,保证对象构造是原子操作
Prototype模式通过自身复制构建新对象
结构型模式Bridge模式

存在多个维度抽象继承,造成类过多的问题。

备注:通过组合多个维度的抽象来解决继承的问题。

笔与颜色两个维度抽象,如果是蜡笔,笔和颜色是合并在一起的,只能按笔和颜色的组合数量创建对应数量的类。如果是毛笔和颜料,笔和颜色是分离的,这个时候应该用Bridge模式,通过组合的方式,把笔和颜色两个类组合在一起,而不应该通过继承的方式,将子类同时继承笔类和颜色类。
Adapter模式调用第三方库同时要适配已设计好的接口
Decorator模式

一个类需要经常添加新的方法。

备注:通过组合新方法类的方式来解决继承的问题。

Composite模式递归构建树状的组合结构
Flyweight模式存在大量轻量级对象造成内存开销过大

将对象的状态分为“外部状态”和“内部状态”,将可以被共享(不会变化)的状态作为内部状态存储在对象中,而外部对象(例如字体、大小等)我们可以在适当的时候将外部对象作为参数传递给对象(例如在显示的时候,将字体、大小等信息传递给对象)。

std::map<object>

Facade模式只提供简单接口,不关心实现这个接口的具体内容将其他类对象包含在一个类中,只暴露该类中别人感兴趣的接口
Proxy模式将事情委托给另一个程序(类)执行,或解决不能立即获得结果的程序(类)异步操作、智能指针
行为模式Template模式父类实现流程逻辑,子类实现具体细节多态实现
Strategy模式解决Template模式父类流程逻辑无法更改拓展的缺点,以牺牲空间和时间为代价换取灵活性以组合代替继承
State模式因存在不同状态需要大量使用switch/case时与Strategy模式类似
Observer模式数据更新需要显示也一起刷新MVC模型
Memento模式需要恢复现场操作时撤销操作
Mediator模式大量对象间交互时,将多对多交互变成一对多
Command模式实现调用操作的对象和操作的具体实现者之间的解耦请求和命令分离实现
Visitor模式有新需求要更改原类时不推荐,破坏封装性
Chain of Responsibility模式链式处理任务MFC的消息机制
Iterator模式聚合对象的遍历问题STL的迭代器
Interpreter模式使用一个解释器为用户提供一个一门定义语言的语法表示的解释器,然后通过这个解释器来解释语言中的句子XML语法解释器

创建型模式

1. builder模式

原理:Builder定义接口,concreteBuilder继承Builder,concreteBuilder一步步创建Product,Director通过输入不同的concreteBuilder达到创建不同Product的目的。

结构型模式

2. Bridge模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值