设计模式
BillyJue
这个作者很懒,什么都没留下…
展开
-
命令模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。在OOP中,一切都是对象,将请求封装成对象,符合OOP的设计思想,当将客户的单个请求封装成对象以后,我们就可以对这个请求存储更多的信息,使请求拥有更多的能力;命令模式同样能够把请求发送者和接收者解耦,使得命令发送者不用去关心请求将以何种方式被处理。 #include <iostream> using namespace std; #include <vector> cl转载 2020-12-03 15:01:18 · 82 阅读 · 0 评论 -
代理模式
优点: 职责清晰:真实角色就是实现实际的业务逻辑,不关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简介清晰。 高扩展性:具体主题角色可变。 缺点: 这种模式引入了另一个抽象层,这有时可能是一个问题。如果真实主题被某些客户端直接访问,并且其中一些客户端可能访问代理类,这可能会导致不同的行为。 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 实现代理模式需要额外的工作,有些代理模式的实现非常复杂 #include &l...原创 2020-12-03 13:31:01 · 113 阅读 · 0 评论 -
策略模式
#include <iostream> using namespace std; class Strategy { public: virtual void handle() { } }; class StrategyA :public Strategy { public: void handle() { cout << "AAAAAAAAAAAAA" << endl; } }; class Stra...原创 2020-12-03 13:15:17 · 54 阅读 · 0 评论 -
模式方法
定义一个操作的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 实现方案:将算法/逻辑框架放在抽象基类中,并定义好实现接口,在子类中实现细节接口。 注:策略模式,解决的是相同的问题,只是其方案是将各个接口封装为类,通过委托/组合方式解决问题 ①优点 封装不变部分/逻辑框架,扩展可变部分/具体细节 提取公共部分代码,便于维护 行为由父类控制,子类实现-->基本方法子类实现,因此子类可以通过扩展的方式增加相应的功能,符合开闭原则 ②缺点转载 2020-12-02 10:07:29 · 274 阅读 · 0 评论 -
观察者模式
在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。 最常见的一个例子就是: 对同一组数据进行统计分析时候, 我们希望能够提供多种形式的表示 (例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些原创 2020-12-02 09:47:05 · 85 阅读 · 0 评论 -
单例模式
1. 确保一个类只有一个实例被建立 2. 提供了一个对对象的全局访问指针 3. 在不影响单例类的客户端的情况下允许将来有多个实例 class CSingleTon { static CSingleTon *GetInstance(); ~CSingleTon(); private: static CSingleTon *instance; CSingleTon(); }; CSingleTon* CSingleTon::instance = NULL; CSingleT...原创 2020-12-02 09:27:30 · 60 阅读 · 0 评论