Domanda

Voglio utilizzare l'oggetto Pool modello di progettazione per la mia biblioteca, in modo che l'utente non può creare più di un numero predefinito di oggetti.
Come posso forzare l'utente a utilizzare la classe Pool per l'acquisizione di un esempio, invece di costruttore della risorsa?

Non riesco a dichiarare il privato costruttore di risorsa, perché allora la classe piscina non sarà in grado di creare l'istanza o ...

Grazie

È stato utile?

Soluzione

composizione uso e una classe che contiene la collezione. IOW, si dà loro un tipo di involucro intorno alla collezione che regola la creazione di oggetti di visibilità e le maniglie.

Se davvero si vuole restringere ulteriormente la creazione di risorse, è possibile associare senza amicizia con questo approccio (dopo aver visto i commenti C ++ / amico):

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);
        }
    }
};

Altri suggerimenti

La piscina non si necessità di essere separato dalla classe stessa, o la classe potrebbe composito in una piscina, ecc.

Le istanze sarebbe essere recuperato da piscina (autonomo) dell'oggetto, come un Singleton, ma un how-mai-molti-you-want-Eton.

Si potrebbe anche giocare con la visibilità, ma come farlo dipende dalla lingua e IMO, probabilmente non vale la pena - utilizzare un Singleton-come il modello, ma con n oggetti, invece di uno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top