使用单例模式的思想实现多例模式,确保系统中某个类的对象只能存在有限个,如两个或者三个,设计并编写代码,实现一个多例类
时间: 2024-06-16 10:08:40 浏览: 253
多例模式是一种设计模式,它是单例模式扩展。单例模式保证一个类只能存在一个实例,而多例模式则允许一个类存在有限个实例。
下面是使用单例模式思想实现多例模式的步骤:
1. 创建一个多例类,该类负责管理多个实例。可以使用静态成员变量或者容器来保存实例。
2. 将构造函数设置为私有,禁止外部直接创建实例。
3. 在类内部创建有限个数的实例,并提供静态方法来获取实例。
4. 在获取实例的方法中,根据需要返回不同的实例。
以下是一个使用单例模式思想实现多例模式的示例代码:
```cpp
#include <iostream>
#include <vector>
class MultiInstance {
private:
static std::vector<MultiInstance*> instances; // 保存实例的容器
static int maxInstances; // 最大实例数
static int currentInstance; // 当前实例索引
MultiInstance() {
// 私有构造函数
}
public:
static MultiInstance* getInstance() {
if (instances.empty()) {
// 创建初始实例
for (int i = 0; i < maxInstances; i++) {
instances.push_back(new MultiInstance());
}
}
MultiInstance* instance = instances[currentInstance];
currentInstance = (currentInstance + 1) % maxInstances; // 循环获取实例
return instance;
}
void printInfo() {
std::cout << "This is instance " << currentInstance << std::endl;
}
};
std::vector<MultiInstance*> MultiInstance::instances;
int MultiInstance::maxInstances = 3;
int MultiInstance::currentInstance = 0;
int main() {
MultiInstance* instance1 = MultiInstance::getInstance();
instance1->printInfo(); // 输出:This is instance 0
MultiInstance* instance2 = MultiInstance::getInstance();
instance2->printInfo(); // 输出:This is instance 1
MultiInstance* instance3 = MultiInstance::getInstance();
instance3->printInfo(); // 输出:This is instance 2
MultiInstance* instance4 = MultiInstance::getInstance();
instance4->printInfo(); // 输出:This is instance 0,循环获取实例
return 0;
}
```
阅读全文