Pregunta

Quiero usar el Objeto de la Piscina patrón de diseño para mi biblioteca, de modo que el usuario no puede crear más de un número predefinido de objetos.
¿Cómo puedo obligar al usuario a utilizar la Piscina de la clase para la adquisición de una instancia, en lugar de constructor de los recursos?

Yo no puede declarar el recurso constructor privado porque entonces la piscina de la clase no será capaz de crear la instancia de cualquiera de...

Gracias

¿Fue útil?

Solución

Use la composición y una clase que contiene la colección. Iow, les das un tipo de envoltura alrededor de la colección que ajusta la visibilidad y maneja la creación de objetos.

Si realmente desea restringir aún más la creación de recursos, puede unirse sin amistad usando este enfoque (después de haber visto los comentarios de C ++/Friend):

class t_resource {
private:
    t_resource();
public:
    ~t_resource();

    static void AddToResourcePool(t_resource_pool& resourcePool) {
        if (resourcePool.isFull()) {
            /* error */
        }
        else {
            resourcePool.addResource(new t_resource);
        }
    }
};

Otros consejos

La piscina no necesidad para ser independiente de la propia clase, o la clase de compuestos en una piscina, etc.

Las instancias se recuperaría de la del objeto (autónomo) de la piscina, como un singleton, pero sin embargo-muchos-que-quieras-eton.

También se puede jugar juegos con la visibilidad, pero la forma de hacerlo depende del lenguaje, y de la OMI, probablemente no vale la pena el esfuerzo-el uso de un singleton patrón similar, pero con n los objetos, en lugar de uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top