Comment concevoir une fabrique d'objets C ++ simple?

Dans ma demande, il y a 10 à 20 classes qui sont instancié qu'une seule fois[*]. Voici un exemple:

class SomeOtherManager;

class SomeManagerClass {
public:
    SomeManagerClass(SomeOtherManager*);
    virtual void someMethod1();
    virtual void someMethod2();
};

Les Instances des classes sont contenues dans un objet:

class TheManager {
public:
    virtual SomeManagerClass* someManagerClass() const;
    virtual SomeOtherManager* someOtherManager() const;
    /** More objects... up to 10-20 */
};

Actuellement TheManager utilise le nouveau opérateur afin de créer des objets.

Mon intention est d'être en mesure de remplacer, à l'aide de plugins, la SomeManagerClass (ou toute autre classe) mise en œuvre par un autre. Afin de remplacer la mise en œuvre, 2 étapes sont nécessaires:

  1. Définir une classe DerivedSomeManagerClass, qui hérite SomeManagerClass [plugin]
  2. Créer la nouvelle classe (DerivedSomeManagerClass) au lieu de la valeur par défaut (SomeManagerClass) [application]

Je suppose que j'ai besoin d'un certain type de l'objet d'usine, mais il devrait être assez simple car il n'y a toujours qu'un seul type de création (la valeur par défaut de la mise en œuvre ou de l'utilisateur mise en œuvre).

Une idée sur la manière de concevoir une simple usine comme je viens de décrire? Considérez le fait qu'il pourrait y avoir plus de classes dans l'avenir, il devrait donc être facile à étendre.

[*] Je n'ai pas de soins si elle survient plus d'une fois.

Edit: Veuillez noter qu'il y a plus de deux objets qui sont contenues dans TheManager.

source d'informationauteur kshahar