单例模式(Singleton Pattern)设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。
一般分为懒汉式单例模式和饿汉式单例模式
懒汉式单例模式是指在需要的时候才去创建实例对象。
class Singleton {
private:
static Singleton* instance;
// 私有构造函数,防止外部调用构造新的实例,拷贝构造函数也一样
Singleton() {}
public:
// 获取单例实例的静态方法
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
// 示例方法
void printMessage() {
std::cout << "Hello, I am a singleton instance!" << std::endl;
}
};
// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
int main() {
// 获取单例实例并调用方法
Singleton* singleton = Singleton::getInstance();
singleton->printMessage();
return 0;
}
饿汉式单例模式是指在类加载时就创建实例对象。
class Singleton {
private:
static Singleton* instance;
// 私有构造函数,防止外部调用构造新的实例
Singleton() {}
public:
// 获取单例实例的静态方法
static Singleton* getInstance() {
return instance;
}
// 示例方法
void printMessage() {
std::cout << "Hello, I am a singleton instance!" << std::endl;
}
};
// 初始化静态成员变量,在类加载时即创建实例
Singleton* Singleton::instance = new Singleton();
int main() {
// 获取单例实例并调用方法
Singleton* singleton = Singleton::getInstance();
singleton->printMessage();
return 0;
}
根据具体的需求和应用场景选择合适的单例模式实现方式。