分享

创建型-设计模式

 ylsnData 2018-06-23

设计模式资料:http:///tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/


23种设计模式讲解:http://edu./course/426/lesson/list
​一:单例模式

1,单例模式的应用场景

(1),网站的计数器:记录访问量的次数

(2),web应用的配置管理器:管理多个应用的配置信息

(3),应用程序的日志管理系统:便于信息的维护和查阅

(4)数据库应用的连接池

(5),多线程应用的线程池
(6),资源型应用的内存池

(7),操作系统的文件系统和打印假脱机

2,单例模式的实现

(1),借助于类型禁止在外部创建对象

私有构造函数:private

(2),仅在类型内部创建唯一对象实例

类自己维护一个唯一的实例

静态成员变量:instance

(3),提供用于获取对象实例的公知接口

提供访问该实例的方法

静态成员函数(静态函数类似全局,属于类,而不属于对象)

getInstance();

(4),单例的实现模式

饿汉式实现

--优点:加载进程时,静态创建单例对象,线程安全

--缺点:无论使用与否,总要创建对象

总结:空间换时间,小对象,使用频繁时使用

实现方式:
​1,将构造函数私有化;
​2,将实例设置为静态变量;
​3,编写得到实例的外部接口函数。

​实例代码C++代码:
​//头文件

/Singleton.h
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};
#endif //~_SINGLETON_H_


//源文件

Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout<<"Singleton...."<<endl;
}
Singleton* Singleton::Instance()
{
if (_instance == 0)
{
_instance = new Singleton();
}
return _instance;
}


​//main文件

//main.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
Singleton* sgn = Singleton::Instance();
return 0;
}
二:生成器模式(Builder,建造者模式)
​      目的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
​UML图:

 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多