J'ai des classes d'usine concrètes qui implémentent MyFactory
interface. Je veux obtenir des objets d'usine concrets basés sur le paramètre. Comment faire cela?
Un moyen est de créer une usine d'usine [FOF] et FOF serait paramétrée.
Y a-t-il un moyen plus élégant de faire cela?
C'est un exercice purement intellectuel, je ne suis confronté aucun problème dans mon projet.
Oui, vous auriez une usine d'usines. Le point clé est que cette classe ou cette méthode devraient être dans la bibliothèque/application supérieure. Seule la plus petite partie possible de l'application doit savoir sur ce fof. Cela pourrait très bien être une méthode simple dans le lanceur de l'application exécutée avant que la boucle principale de l'application s'exécute.
Si vous avez été tenté de créer une interface pour ce FFF, cela indique que votre schéma de création pourrait utiliser la refonte.
EDIT: Il semble que nous ayons besoin de clarifier ce que je veux dire par usine (en réalité abstraite, mais je ne considère pas "une usine" comme modèle. Abstract Factory Motif est une solution à une situation, dans laquelle un code doit créer une instance. , mais le morceau de code lui-même n'a pas suffisamment d'informations pour décider de l'instance de créer. C'est pourquoi le client expose une abstraction et une personne qui dispose d'informations pour créer cette instance réalise que l'abstraction.
Si vous voulez parler de conception, vous devez toujours nous dire comment cela va être utilisé et qui a quelles informations.
Un seul pikefactory doit pouvoir produire des vélos différents - donc un utilisateur choisit une Harley rouge avec un ours en peluche sur le guidon. Vous avez besoin de deux arguments à votre facalisation :: Createbike - Le type de vélo et les options (peinture rouge et décoration de guidon).
Votre BikeFactory crée ensuite une Harley et injecte les options dans cette instance de Harley.
Vous n'avez pas besoin d'une usine de Harley spécifique - Harleys sont construits comme suzukis/Hondas/Sanchezes.