2008-11-20 7 views
4

J'ai appris le modèle de conception de la méthode d'usine, et en même temps, j'ai rencontré l'objet Activator et comment l'utiliser, à la lecture d'un tutoriel (j'ai souvent rencontré cet objet dans IntelliSense). L'activateur permet une liaison tardive, ce qui peut être extrêmement utile. Mais c'est parce que nous ne savons pas quelle classe nous voulons instancier. De même, la méthode d'usine traite le même problème en génie logiciel. À un niveau simple, un groupe d'instructions ifs ou case, puis instanciation d'un objet basé sur la condition if est une implémentation de la méthode factory, n'est-ce pas? Sur un sujet connexe, j'ai lu que le polymorphisme peut réduire le couplage entre les objets en éliminant les instructions de cas. Y a-t-il un exemple de ceci?Quand utiliser l'activateur et quand utiliser la méthode d'usine?

Merci

Répondre

8

Si vous connaissez au moment de la compilation de toutes les classes potentielles que vous voulez instancier, utiliser le modèle d'usine, il sera plus rapide et permet au compilateur de vérifier votre sécurité de type. D'autre part, si vous ne connaissez pas toutes les classes qui pourraient avoir besoin d'être instanciées (par exemple, si vous essayez de fournir une architecture de plugin), votre seule option est d'utiliser Activator.

La règle simple est la suivante: Choisissez une usine en utilisant Activator (ou tout autre type de liaison d'exécution) aussi longtemps que le scénario le permet.

Questions connexes