单例模式
(1)定义:只能创建一个实例化对象的类的模式;
(2)特点:将默认构造函数和拷贝构造函数设计为私有;
(3)访问方法:提供静态成员方法可以访问实例对象;
步骤1:在单例模式内部定义一个Singleton类型的静态对象,作为外部共享的唯一实例;
class Printer
{
private:
//1、定义一个静态的 对象指针变量 保存唯一实例地址
static Printer *singlPrinter;
}
Printer *Printer::singlPrinter = new Printer;
步骤2:提供一个静态方法,作为访问该实例的入口;
class Printer
{
public:
//2、提供一个方法获得单例指针
static Printer *getsinglPrinter(void)
{
return singlPrinter;
}
private:
//1、定义一个静态的 对象指针变量 保存唯一实例地址
static Printer *singlPrinter;
}
Printer *Printer::singlPrinter = new Printer;
步骤3:将默认构造函数和拷贝构造函数设计为私有。
class Printer
{
public:
//2、提供一个方法获得单例指针
static Printer *getsinglPrinter(void)
{
return singlPrinter;
}
private:
//1、定义一个静态的 对象指针变量 保存唯一实例地址
static Printer *singlPrinter;
private:
//3、防止 该实例化其它对象 将构造函数全部 私有化
Printer (){}
Printer(const Printer &ob){}
}
Printer *Printer::singlPrinter = new Printer;
步骤4:设置功能函数
class Printer
{
public:
//2、提供一个方法获得单例指针
static Printer *getsinglPrinter(void)
{
return singlPrinter;
//4、设置功能函数
void printText(char *str)
{
//打印输出信息;
}
}
private:
//1、定义一个静态的 对象指针变量 保存唯一实例地址
static Printer *singlPrinter;
private:
//3、防止 该实例化其它对象 将构造函数全部 私有化
Printer (){}
Printer(const Printer &ob){}
}
Printer *Printer::singlPrinter = new Printer;
步骤5:使用
int main(int argc,char *argv[])
{
Printer *p1 = Printer::getsinglPrinter();
p1->printText("打印测试信息");
}