c++ - 扩展单例模式以允许多个实例

标签 c++ singleton

我们如何扩展单例方法以在 C++ 中允许多个实例。例如,我们如何使用单例模式来确保创建或允许一个类的最多 5 个对象

最佳答案

单例模式不保证可以创建最大 个对象,它会在程序初始化时创建一个对象,并在程序终止时销毁它。

使用工厂函数来控制表示有限资源的对象的创建。

class limited {
private:
    static int instance_count;

    limited() { // users cannot directly call the constructor
        ++ instance_count;
    }

    limited( const limited & ); // do not implement so users cannot copy

public:
    ~limited() {
        -- instance_count;
    }

    static limited make() { // this factory function must be used instead
        if ( limited::instance_count >= 5 ) {
            throw std::runtime_error( "some kind of overflow" );
        }
        return limited();
    }
};

关于c++ - 扩展单例模式以允许多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419608/

相关文章:

ios - 单例+初始化代码

c++ - 如何在最后一个 EOL 后删除文件内容?

c++ - 当两个整数 vector 的第一个元素都是负数时,如何正确使用 < 和 > 运算符?

c++ - OpenGL——多个 glDrawArrays() 调用只显示第一次的结果?

python - 单例 python 生成器?或者,pickle 一个 python 生成器?

java - 如何将从 API REST 检索到的对象分配给单例类?

c# - 新线程无法识别已经创建的主线程单例

c++ - 如何避免在 C++ 文本读取中读取空格

c++ - 如何强制 C++ 模板的特定实例实例化?

java - 单例和静态工厂方法有什么区别