设计模式
文章平均质量分 74
边缘计算机
这个作者很懒,什么都没留下…
展开
-
了解单例模式
单例模式singleton单例和多线程,传统的单例模式实现:class Singleton{private: Singleton(){}public: static Singleton* instance() { if(_instance == 0) {//很巧两个线程同时进入该区域,就会创建2次堆对象,//并且第一次new的堆对象再也控制不住了,要对_instance变量加上互斥锁: _in...原创 2021-12-14 22:35:30 · 1232 阅读 · 0 评论 -
C++设计模式笔记——代理模式
代理模式定义代理模式定义:为其他对象提供一种代理,用以控制这个对象。有四种常用的情况:(1)远程代理,(2)虚代理,(3)保护代理,(4)智能引用。本文主要介绍虚代理和智能引用两种情况。 一个可以在文档中,嵌入图形对象的文档编辑器。有些图形对象的创建开销很大。但是打开文档必须很迅速,因此我们在打开文档时,应避免一次性创建所有开销很大的对象。这里就可以运用代理模式,在打开文档时,并不打开图形对象,而是打开图形对象的代理,以替代真实的图形。待到真正需要打开图形时,仍由代理负责打开。代...原创 2021-01-01 20:32:03 · 96 阅读 · 0 评论 -
C++设计模式笔记——观察者模式
概念观察者模式又被称为发布-订阅模式(Publish-Subscribe)、模型-视图模式(Model-View)、源-监听器模式(Source-Listener)、从属者模式(Dependents)。它属于行为型模式的一种。观察者模式:定义对象之间一对多的依赖关系,使得一个对象的状态发生改变时,它的关联对象都得到通知并被自动更新。一个对象状态改变时(目标对象Subject),所有依赖他的对象(观察者对象Observer)都得到通知并能够发生改变。Subject(目标):是被观察的对象,原创 2020-11-12 19:01:04 · 151 阅读 · 0 评论 -
C++设计模式笔记——桥接模式
桥接模式如果某个类存在两个维度可以独立变化,我们可以将这两个维度分离开,独自变化,从而使它们独立扩展。这就是桥接模式要做的事。下面的示例,将电脑和软件做了抽象,从而实现了电脑和软件可以独立变化的模式。电脑内包含软件,电脑种类众多,软件种类也一样众多。使用桥接模式把电脑与其中的软件桥接起来,把抽象概括起来。不同的拓展时只需要添加具体的电脑和具体的软件类。代码示例#include <iostream>class ISoftware //软件抽象类{public: v.原创 2020-11-11 11:54:53 · 234 阅读 · 0 评论 -
C++设计模式笔记——状态模式
概述状态模式是非常好理解的;没有深奥的时序关系,就是将对象各种状态下的行为分离开来,不再是简单的if…else或switch…case分支结构,而是每个状态对应一个类,每个类管理一个状态;在多种状态的情况下,让程序结构简明化,同时也易于扩展,从而简化了程序的维护和管理。旧方式在实际开发中,我们经常会遇到这种情况:一个对象被预设了很多状态,在每个状态下,都有不同的行为。在代码中我们经常是这样实现的。代码如下:typedef enum tagState{ StateA, ...原创 2020-11-06 16:08:30 · 218 阅读 · 0 评论 -
C++设计模式——门面模式(Facade)
定义门面模式是比较常用的一种设计模式,在 GoF 《设计模式》书中,门面模式是这样定义的:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。门面模式也有的书叫外观模式, 它提供一个高层次的接口,让子系统更易于使用。门面模式用一个门面类来处理子系统的复杂关系,门面类提供简单的Api接口供客户端调用。高内聚,松耦合。安全。优点减少系统的相互依赖提高了灵活性提高安全性适用场景解决易用性问题。为访问一系列复杂的子系统提供一个统一的、简单的入口,可以使用外观模式;原创 2020-09-24 13:21:54 · 393 阅读 · 0 评论