Come posso evitare di costruzione con piscina Object
-
25-10-2019 - |
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
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.