一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。
如何让一个类无法定义对象? #
接口类或抽象类无法定义对象。
class A //接口类
{
public:
virtual void AA() = 0;
};
如何定义一个整形变量,让他只能是10的倍数 #
如果想要规定别人必须怎么做,就要使用接口
class CNum
{
private:
int num;
CNum()
{
num = 0;
}
void Set(int n)
{
num = n*10;
cout << "附加应用" << endl; //唯一操作num的方式,如果想用num,那在这个函数内写的其他内容都被捆绑执行
}
};
封装过程 1:把int num隐藏起来不让别人用。 2:提供一个调用int num的接口并且这个接口的方法是固定的。
什么是单例模式? #
1.先不让一个类定义对象 2.再提供一个接口,产生一个对象
A *pA = NULL;
class A
{
private:
A(){} //第一步:把构造函数设置为私有方法
public:
static A *GetObject() //静态函数无需对象即可调用
{
if(pA == NULL)
{
pA = new A; //第二步:如果没有对象,就创建一个对象,如果有,就不定义了。
}
return pA;
}
};
int main()
{
A *pA = A::GetObject();
return 0;
}
为什么要用单例模式 #
单例模式应用场景 #
打印机的任务队列 任务管理器
实现 #
class singleton
{
public:
static singleton *getInstance()
{
if(pSingle == NULL)
{
pSingle = new singleton;
return pSingle;
}
}
static void DestroyInstance()
{
if(pSingle)
{
delete pSingle;
pSingle = NULL;
}
}
private:
singleton(){}
~singleton(){}
singleton(const singleton&);
static singleton *pSingle; //初始化 1 pSingle = NULL(懒汉) pSingle = getInstance()(饿汉)
}