
设计模式
柳亓
这个作者很懒,什么都没留下…
展开
-
观察者模式(Observer)
设计模式之观察者模式。 观察者的模式作用是:发送状态变化通知。 Observer的意思是“进行观察的人”,也就是“观察者”的意思。 在Observer模式中,当观察对象的状态发生变化时,会通知给观察者。Observer模式适用于根据对象状态进行相应处理的场景。 示例代码如下:#include<iostream>#include<string>#include...原创 2018-05-29 21:47:27 · 852 阅读 · 0 评论 -
单例模式(Singleton)--遇到多线程时的问题
前面讲述了单例模式的基本概念:https://blog.youkuaiyun.com/Lunar_Queen/article/details/81774016。 然而,在多线程环境下,前面的程序段并不能保证真正的“单例”。 示例代码如下:#include<iostream>#include<Windows.h>#include<process.h>usin...原创 2018-08-17 14:07:09 · 957 阅读 · 0 评论 -
单例模式(Singleton)
单例模式的作用:只创建一个类的实例。 有时候,在程序设计中,我们只想产生一个类的实例,那么只用调用一次new MyClass(),就可以达到目的。但是,如果我们不想“必须多加注意才能确保生成一个实例”,而是要达到如下目的时: 1、想确保任何情况下都绝对只有1个实例。 2、想在程序上表现出“只存在一个实例”。 像这样的确保只生成一个实例的模式被称为单例模式Singleton。 示例代码如下...原创 2018-08-17 10:54:04 · 311 阅读 · 0 评论 -
工厂方法模式(Factory Method)
工厂方法模式的作用:将实例的生成交给子类。 在Factory Method方法模式中,父类决定实例的生成方式,但是并不决定要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成实例的框架和实际负责生成实例的类解耦合。 示例代码如下:#include<iostream>using namespace std;//简单工厂--Factory//工厂角色、 ...原创 2018-08-17 10:39:23 · 280 阅读 · 0 评论 -
外观模式(Facade)
设计模式之外观模式。 外观模式的作用:为复杂的系统提供高层的接口。 程序这个东西总是会变的越来越大。随着时间的推移,程序中的类会越来越多,而且它们之间相互关联,这会导致程序结构也变得越来越复杂。随之也会使得我们在使用这些类之前,必须弄清楚它们之间的关系,注意正确的调用顺序。 特别是在调用大型的程序进行处理时,我们需要格外注意哪些数量庞大的类之间错综复杂的关系。不过,与其这么做,不如为这个大型...原创 2018-05-31 12:35:44 · 206 阅读 · 0 评论 -
模板模式(Template Method)
模板模式的作用:讲具体的实现交给子类完成。 使用场景:模板原指带有镂空文字薄薄的塑料板。只要用笔在模板的镂空出进行临摹,即使是手也能写出漂亮的文字。只要看到这些镂空的洞,就可以知道要写出来的文字,但是,具体写出来的文字是什么感觉,依赖于你所使用的笔。如果使用签字笔来临摹,则写出签字笔似的文字。如果使用铅笔,则写出铅笔字。如果使用彩色笔临摹,则写出彩色字体。然而,无论你使用什么笔写字,最终写出来的...原创 2018-08-14 11:08:59 · 216 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式的作用:使得已有的代码更好地能够复用。 使用场景:如果想让额定工作电压是直流12V的笔记本在交流100V的AC电源下工作,应该怎么做呢?通常,我们会使用AC适配器,将家用100V的交流电转化为我们想要使用的直流12V。这就是适配器的作用,它位于实际情况和具体需求之间,通过转换弥补两者之间的差异。 示例代码如下:#include<iostream>using na...原创 2018-08-14 10:55:22 · 216 阅读 · 0 评论 -
迭代器模式(Iterator)
迭代器模式的作用:一个一个地遍历集合中的元素。 迭代器模式使得对集合中元素的访问更加具有一致性。 示例代码如下:#include<iostream>using namespace std;//迭代器模式//参见STL中迭代器设计理念typedef int Object;#define SIZE 5class MyIterator{public...原创 2018-08-14 10:47:18 · 243 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)
设计模式之责任链模式。 责任链模式的作用是:推卸责任。 “推卸责任”听起来有些贬义的意思,但是有时候也确实存在需要“推卸责任”的情况。例如,当外部请求程序进行某个处理,但程序暂时无法决定由那个对象负责处理时,就需要推卸责任。这种情况下,我们需要考虑:将多个对象组织成一条职责链,然后按照他们在职责链上的顺序一个一个地找出到底应该谁来负责处理。 示例代码如下:#include&amp;amp;amp;lt;io...原创 2018-05-30 17:23:29 · 257 阅读 · 0 评论 -
策略模式(Strategy)
设计模式之策略模式。 策略模式的主要作用是:整体地替换算法。 无论什么程序,其目的都是解决问题。而为了解决问题,我们需要编写特定的算法。使用Strategy模式可以整体地替换算法的实现部分。能够整体地替换算法,能让我们轻松地以不同的算法解决同一个问题,这种模式就是Strategy模式。 示例代码如下:#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespa...原创 2018-05-29 18:57:17 · 357 阅读 · 0 评论 -
单例模式(Singleton)--多线程问题解决办法
前面提到单例模式在多线程环境下并非“单例”:https://blog.youkuaiyun.com/Lunar_Queen/article/details/81776647。 下面提出了一种解决该问题的方法:类的静态数据成员只会被初始化一次。 示例代码如下:#include<iostream>#include<Windows.h>#include<process.h&...原创 2018-08-17 14:16:59 · 445 阅读 · 0 评论