中国反钓鱼网站联盟,网站建设学什么软件,杭州设计公司有哪些,建立微信小程序单例模式
单例模式属于创建类型的一种常用的软件设计模式,通过单例模式的方法创建的类在当前进程中只有一个实例。
应用场景
配置管理 日志记录 线程池 连接池 内存池 对象池 消息队列
实现步骤
1.将类的构造方法定义为私有方法#xff08;为了只实例化一个单例#xff…单例模式
单例模式属于创建类型的一种常用的软件设计模式,通过单例模式的方法创建的类在当前进程中只有一个实例。
应用场景
配置管理 日志记录 线程池 连接池 内存池 对象池 消息队列
实现步骤
1.将类的构造方法定义为私有方法为了只实例化一个单例 2.定义一个私有的类的静态实例 3.提供一个公有的获取实例的静态方法。
涉及知识点
1.static 静态成员数据 2.static 静态成员函数 3.template模板类 4.friend友元类
设计与实现
常用实现
#pragma once
#include iostreamclass A
{public://通过该方法创建实例static A* instance(){//如果没有创建过类对象则创建一个实例if (m_instance NULL){m_instance new A(); }return m_instance;}void show(){std::cout m_name std::endl;}//1.将类的构造方法和析构都定义为私有的
private:A() :m_name(A) {}A(const A) {}~A() {}A operator (const A );
private://定义静态的类数据static A* m_instance;string m_name;
};
A* A::m_instance NULL;模板实现
#pragma once
#include iostreamtemplate typename T
class Singleton
{public://通过该方法创建实例static T* instance(){//如果没有创建过类对象则创建一个实例if (m_instance NULL){m_instance new T();}return m_instance;}void show(){std::cout m_name std::endl;}//1.将类的构造方法和析构都定义为私有的
private:Singleton() {}Singleton(const SingletonT);~Singleton() {}SingletonT operator (const SinletonT);
private://定义静态的类数据static T* m_instance;string m_name;
};
template typename T
T* SingletonT::m_instance NULL;