Question

Je veux utiliser le design pattern pool d'objets pour ma bibliothèque, de sorte que l'utilisateur ne peut pas créer plus d'un nombre prédéfini d'objets.
Comment puis-je forcer l'utilisateur à utiliser la classe piscine pour l'acquisition d'une instance, au lieu de constructeur de la ressource?

Je ne peux pas déclarer le constructeur privé de ressources, car alors la classe de piscine ne sera pas en mesure de créer l'instance soit ...

Merci

Était-ce utile?

La solution

composition d'utilisation et une classe qui détient la collection. OIEau, vous leur donnez un type d'emballage autour de la collection qui ajuste la visibilité et les poignées de création d'objets.

Si vous voulez vraiment limiter la création de ressources encore plus loin, vous pouvez lier sans amitié avec cette approche (après avoir vu les c ++ / commentaires ami):

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

Autres conseils

La piscine ne pas besoin pour être séparé de la classe elle-même, ou la classe pourrait composite dans une piscine, etc.

Les instances seraient extraites de la piscine (autonome) de l'objet, comme un singleton, mais comment jamais-beaucoup-you-want-eton.

Vous pouvez également jouer à des jeux avec une visibilité, mais comment le faire dépend de la langue, et l'OMI, sans doute pas la peine - utiliser un modèle semblable à singleton, mais avec n objets, au lieu d'une.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top