
设计模式
速趴赛亚金
写代码之前好好思考
展开
-
C++设计模式之策略模式
前言在日常生活中,我们经常会遇到为完成某件事情,通常我们的方法都有很多种选择。例如,从上海去北京,我们可以坐火车,坐飞机或者自己开车去。事实上,在软件开发中也经常会有相类似的情况,当需要实现某一需求或功能时,可能存在多种算法。例如,在做一道算法题时,我们可以根据要求的时间复杂度或者空间复杂度采取不同的算法去实现。假设这样一种场景,当我们要出门旅游时,去近的地方,我们可能选择自驾,去远一些的地方...原创 2020-04-12 22:21:22 · 176 阅读 · 0 评论 -
c++设计模式之装饰模式
前言装饰,顾名思义,就是对现有的物件进行优化,比如加一些好看的物件等等。例如拍出来的照片需要进行美化,刚建好的房子需要装修等等。在软件设计中,有时候也需要对现有的类进行“装饰”,以满足客户的要求。装饰模式的定义装饰模式:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰模式能够实现动态的为对象添加新的功能,并且是从类的外部来增加...原创 2019-12-19 19:55:42 · 216 阅读 · 0 评论 -
c++设计模式之适配器模式
前言在生活中,经常出现因为两个对象的接口不兼容而不能一起工作的情况。例如中国人和美国人进行交流,就需要一个翻译;还有家用的220V电压在给一些电器如手机,电脑等进行充电时就需要电源适配器,还有一台电脑要读取一张sd卡的数据也需要将sd卡先插在读卡器上,再插在电脑上才能读取数据,这些都是因为两个对象之间的接口不兼容,所以需要一个适配者来使他们能够一起工作,在软件设计中依旧如此。当软件设计中出现这种...原创 2019-12-18 20:01:36 · 168 阅读 · 0 评论 -
c++设计模式之代理模式
前言在某些情况下,客户不能或者不想直接访问一个对象时,可以通过寻找一个中介来帮他完成访问对象的任务。例如自己不愿意去上课时,可以找一个人A代替你去上课,A就扮演了代理者的角色。在软件设计中,代理模式的使用也是为了完成这样的一种机制。代理模式的定义由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。...原创 2019-12-12 18:24:57 · 243 阅读 · 0 评论 -
c++设计模式之观察者模式
前言观察者模式是使用频率最高最常用的模式之一,观察者模式要解决的问题为:建立一个一( Subject)对多( Observer) 的依赖关系, 并且做到当“一” 变化的时候, 依赖这个“一”的多也能够同步改变。模式的定义和特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订...原创 2019-12-09 20:10:25 · 167 阅读 · 0 评论 -
c++单例模式与线程安全(二)
前言上一篇文章中(c++单例模式与线程安全(一)),简单的介绍了单例模式的概念以及两种实现方式(懒汉和饿汉)。这里首先回顾一下懒汉和饿汉的概念。懒汉:在第一次使用时创建实例。饿汉:在类加载时创建实例。线程安全分析试想一下,如果有多线程的情况下,两种单例模式是否安全?是否会出现创建多个实例的情况呢?下面先来看一下饿汉方式的单例模式,在此之前,我再把饿汉方式的实现代码拷贝过来,有助于分析。...原创 2019-12-06 14:46:19 · 195 阅读 · 0 评论 -
c++单例模式与线程安全(一)
1.什么是单例模式单例模式是设计模式中的一种,也是最常用和简单的设计模式之一。单例模式,顾名思义,它是为了保证一个类只能有一个实例或者说该类只能被实例化一次。标准的定义如下:单例模式确保一个类只有一个实例,并且自行实例化向整个系统。单例类提供了全局的访问点。2.单例模式的实现假设我们有一个配置文件类,提供了read配置文件,set配置文件等方法,但是系统中只需要一个配置文件,该类只需要实例...原创 2019-12-03 17:15:27 · 257 阅读 · 0 评论 -
c++设计模式之工厂模式
前言工厂模式是23种设计模式中用的频率比较高,同时也是较为简单的模式。工厂模式,顾名思义,是一种创建型的模式,其实现方式有三种,分别是简单工厂模式,工厂方法模式和抽象工厂方法。简单工厂简单工厂模式又称静态工厂方法模式,是最简单的一种工厂模式。简单工厂模式是通过传入参数给工厂对象,指定创建某一种产品实例。简单工厂模式的UML图如下:接下来看一个例子,以生产电脑为例,假设有一个工厂可以生产联...原创 2019-11-30 13:03:32 · 156 阅读 · 0 评论