我们如何扩展单例方法以在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/

10-09 04:18