设计模式
koko_TT
Show me the code.
展开
-
C++单例模式
理解单例模式在学习设计模式的单例模式时,看到过有人举的一个例子。觉得很不错。单例模式就是想要达到Windows系统下回收站的效果。不论打开过多少次回收站,删除的垃圾文件最终只会被一个地方回收,那就是回收站的唯一一个实例。或许有更好的例子帮助理解,但这个比喻我觉得已经相当形象了。语言层面的注意点注:单例模式的实现方法可能不唯一,而且还有多线程下的单例模式。这里谈到的单例模式只是最基本的那种。...原创 2019-03-01 21:06:23 · 284 阅读 · 0 评论 -
C++适配器模式
01 用途两个接口不匹配的类想要交互,直接改接口太繁琐(大工程就体现出来了),就添加第三类(适配器类)来协调两者的关系。形象理解,假设现在有两个忍者——年轻的忍者和年老的忍者,其中年轻的攻击漏洞百出,而年老的则成熟稳健,现在年轻的忍者需要参加考试,所以想打出老年忍者成熟稳健的拳法,适配器就完成了这个转换过程,即用老年忍者来“训练”年轻的忍者。02 分类及实现方法适配器模式分为两类对象适...原创 2019-06-21 11:40:53 · 229 阅读 · 0 评论 -
C++观察者模式
01 观察者模式做了什么存在过程如下——被观察者更新信息,观察者从被观察者处获取更新的信息,现在我们想省去第二步,即如果观察者订阅了被观察者,那么当被观察者更新信息的时候,被观察者可以自动获取更新。考虑一个具体的模型。对于老师和学生来说,老师是被观察者,学生是观察者,当老师更新一个消息的时候我们想使得订阅该老师的学生能够自动的获取老师本次更新的信息。在代码中借助观察者模式来完成这个操作。0...原创 2019-06-21 16:50:34 · 609 阅读 · 0 评论 -
C++工厂模式
01 工厂模式解决了什么问题在实际的项目中,如果只是借助关键字new来创建类的实例,在类的种类越来越多的情况下,很难准确的记住他们的名字,这时候可以将相关类的创建封装在一种"工厂类"中。当要创建相关的类的实例的时候,就借助"工厂实例"中的成员函数完成实例的创建。02 工厂模式的种类简单工厂模式这种模式不利于后期更多"产品类的加入",因为在简单工厂模式下,只存在一个工厂类,而得到不同的产...原创 2019-06-22 22:21:39 · 206 阅读 · 0 评论 -
C++代理模式
01 使用场景不想让一个类暴露,去填充一个接口需求,这时就构建一个代理类,他封装被代理对象完成实际的调用需要。02 构建方法构建一个只含纯虚方法的基类,被代理类和代理类都是该基类的派生类。被代理类重写基类的方法。代理类内含一个基类类型的指针,实际后续指向堆上的被代理类实例。构造函数接受一个基类类型的指针,实际指向堆上的被代理类实例,并用该指针初始化自身内含的基类指针。重写基类的...原创 2019-06-24 16:47:52 · 206 阅读 · 0 评论 -
C++桥模式
01 桥模式的用途若一个类具有两种属性:属性A和属性B。其中A属性有三种B属性有四种。那么实际需要编写的类的个数为3*4 = 12如果我们把具体的类抽象成一种需要装载两种属性的模具,那么需要编写的代码就大大减少。02 构建方法以两种属性为例构建属性A的抽象基类为不同的属性A构建不同的具体类作为基类的派生类,重写基类的方法。构建属性B的抽象类为不同的属性B构建不同的具体类作为基类的派...原创 2019-06-24 16:48:56 · 394 阅读 · 0 评论 -
C++ 生产者消费者模式的简单实现
01 模式简介生产者消费者模式可以理解为在生产者和消费者之间添加一个缓冲区,生产者只负责向缓冲区添加元素,而消费者只负责从缓冲区提取元素并使用。这么做可以对生产者与消费者进行解耦,这样一来消费者不直接调用生产者,使得生产者的不会因为生产者的具体处理而阻塞,充分利用资源。02 思路介绍代码中的具体元素为Stone类,生产者线程负责向缓冲类Busket中添加具体元素,而消费者线程则在缓冲类中的...原创 2019-08-20 11:47:03 · 4457 阅读 · 0 评论 -
C++多线程单例模式
01 原理单例模式即是私有化构造函数,创建时通过类中静态函数获得单一实例的一种特殊类。在多线程下需要加上互斥锁,保证单例模式的创建和析构是原子性的。由于单例模式的特殊性,这里不讨论其析构函数,个人在具体使用的环境中不需要析构单例模式的实例。02 结果创建十个线程来测试。singleton bornPID:: 0x70000c545000 ------ instance address ...原创 2019-09-05 11:47:44 · 1211 阅读 · 0 评论