
设计模式学习
个人关于设计模式的记录
爱就是恒久忍耐
纸上谈来终觉浅,绝知此事要躬行
展开
-
Obsever与Pub-Sub的区别(使用C++代码理解)
理解Observer和Pub-Sub之间的区别原创 2020-12-13 20:49:30 · 722 阅读 · 0 评论 -
设计模式 --- 装饰器模式(Decorator)
装饰器模式就是在不改变原有类或函数的基础上,增强该类或函数的功能,增强后会生成新的类或函数。如果用过python的装饰器就更好理解了,道理是一样的。 一 代码 假设我们有个类叫 ...原创 2019-06-12 22:43:43 · 229 阅读 · 0 评论 -
设计模式 --- 代理模式(Proxy)
一 代理(Proxy)的概念 首先让我们看个例子来了解下代理(Proxy)的概念。 假如用户要访问百度,那么就会在浏览器里输入百度的地址然后回车就可以访问百度,形式是下图这样, 但是如果用户在国外,可能无法访问国内的百度服务器(被屏蔽),这个时候如果用户还想访问百度,就需要用到代理了,这个代理也是个服务器,它的功能就是把我们的网络请求转发给百度服务器,并把百度服务器返回的结果再返回给用户,这样用...原创 2019-06-11 21:40:18 · 351 阅读 · 0 评论 -
设计模式 --- 策略模式(Strategy)
假如我们要买一台组装的台式电脑,那么就需要鼠标、键盘、显示器和机箱这4个部件。现在有2个组装机厂商都提供电脑,一个叫A,另一个叫B,相同价位下,A和B都有自己的一套产品。我们买电脑是去找销售买。 一 代码描述 下面用代码来描述一下具体情况,首先代码表示一下两个厂商, enum PCProvider { A, B }; 然后定义一个基类,用来抽象厂商的行为,主要是添加鼠标、键盘、显示器和机...原创 2019-06-02 17:56:36 · 309 阅读 · 0 评论 -
设计模式 --- 单例模式(Singleton)
一 简述 单例模式的思想就是:在整个程序的任何地方,一个类只能有一个实例化对象。 例如,如果一个类的功能是把数据库加载到内存里,然后提供一些read-only的接口供其它对象使用,那么这个类就很适合单例模式,如果不用单例模式,那么每次生成这个类的对象时都要去把相同的数据库加载到内存里,就会造成内存空间的浪费。 二 C++11 代码 1. 从stack上分配内存,并返回类对象的引用 class Da...原创 2019-05-06 21:52:50 · 230 阅读 · 7 评论 -
设计模式 --- 工厂模式(Factory)
类比 待续… C++代码举例 #include <iostream> using namespace std; typedef enum {RECTANGLE, CIRCLE, SQUARE} ShapeType; class IShape { public: virtual void draw() = 0; }; class Rectangle : public I...原创 2018-12-04 21:55:16 · 236 阅读 · 0 评论 -
设计模式 --- 观察者模式(Observer)
类比 设计模式很多是来源于生活,其中观察者模式可以用微信公众号的例子来解释, 当公众号博主写了一篇新文章,然后发布到公众号上来,这样所有订阅该公众号的用户都会收到这篇文章的推送。 C++代码举例 假设我们有个类叫blogger,这个类里包含一个公众号类OfficalAccount,blogger类可以注册用户,并且可以发布文章到 ...原创 2018-12-02 13:06:14 · 271 阅读 · 0 评论