Question

CodeCampServer code source contient un générique StaticFactory .

Je conjecturant que c'est un élément clé du mécanisme de la façon dont le cadre joue bien avec l'injection de dépendances.

qui utilisent des sous-classes, il est DefaultUnconfiguredState pour fournir un accès statique, bien, un défaut Unconfigured Etat pour eux-mêmes que le mécanisme de résolution de dépendance peut remplacer par des choses de travail.

Je n'ai pas été en mesure de trouver de la documentation pour cette ...

Y at-il une bonne explication dans le livre ? (Je suis en attente de livraison d'Amazon ...)

... ou quelqu'un d'autre peut fournir un bon commentaire sur ce que cela est et si je serais sage d'adopter ce modèle (si elle est un ...)?

Mise à jour

Depuis Jeffrey Palermo a répondu à cette question, je vois que dans le ce modèle / style (travail en cours) manuscrit pour MVC2 en action est discutée et illustrée à l'aide d'une usine qui est utilisé pour localiser un dépôt afin de maintenir la couche de domaine ignorant des problèmes de persistance. (Voir chapitre 23 ).

Par défaut, l'utilisation de cette usine jette une exception:

  

«la connaissance de la façon de créer la   dépôt ne réside pas avec le   usine. Cette usine seulement   représente la capacité de revenir   le dépôt "

L'exemple aurait pu utiliser l'un des mécanismes pour l'initialisation d'une mise en œuvre concrète de l'interface du référentiel. Dans l'exemple dans le livre qu'ils choisissent de ne pas utiliser un contenant du CIO pour un souci de simplicité et de fournir explicitement dans une logique de démarrage.

  

"La chose importante est que ni   le projet de base, ni le projet de l'interface utilisateur   devrait faire référence à l'infrastructure   projet ou les bibliothèques qui sont purement   infrastructurel dans la nature. On a   gardé NHibernate complètement à la   côté de sorte que le reste de la   l'application ne se soucie pas comment les données   l'accès se passe "

Un dernier point à noter sur le code exemple dans ce nouveau chapitre est que l'usine est plus statique (au moins pas aussi loin que l'interface tournés vers l'extérieur est concerné).

Mise à jour 2

M. Palerme blogué un peu plus sur ce style particulier de l'usine Résumé (voir la implementaion de OrderShipperFactory).

Je pourrais aussi considérer simplement 'Manuel injection de dépendance' (oncle Bob).

Mise à jour 3 - Mars 2016

Il y a un autre exemple de celui-ci ici , bien que Jeffrey est explicite à ce sujet être le code de démonstration, et le commentaire indique que cela serait configuré dans ce que Mark Seeman appellerait un Composition racine (par exemple à l'application de démarrage)

J'ai découvert ce dans l'article de Jeffrey « Architecture de l'oignon: partie 4 - Après quatre ans "

Était-ce utile?

La solution

Bonne question. Je ne l'aime pas non plus. Il devrait vraiment être nommé « StartupFactoryConfiguration », mais il est sur la liste de refactoring.

Nous avons joué avec cette idée comme un moyen de mettre en place DI pour les lieux qui ne sont pas sous l'injection de constructeur via le conteneur.

Il disparaîtra. Je ne sais pas ce que l'anti-modèle est (quel nom?), Mais StaticFactory va mourir.


Maintenant, il a été rebaptisé ce matin. Il est maintenant AbstractFactoryBase. Il est une implémentation du motif Fabrique Abstraite: http://en.wikipedia.org/wiki/Abstract_factory_pattern

La mise en œuvre de l'usine est de finir par appeler un contrainer IoC, mais elle permet d'accéder à partir d'un endroit dans le code sans référence d'assemblage à l'ensemble de conteneur IoC.

Cordialement, Jeffrey Palermo

scroll top