Le château de Windsor est une inversion de contrôle de l'outil. Il existe d'autres comme elle.
Il peut vous donner des objets avec des pré-intégré et pré-câblé dépendances droit. L'ensemble d'un objet graphique créé via la réflexion et de configuration plutôt que l'opérateur "new".
Commencez ici: http://tech.groups.yahoo.com/group/altdotnet/message/10434
Imaginez que vous avez un e-mail de l'envoi de la classe. EmailSender. Imaginez que vous avez une autre classe WorkflowStepper. À l'intérieur de WorkflowStepper vous devez utiliser EmailSender.
Vous pouvez toujours dire new EmailSender().Send(emailMessage);
mais que - l'utilisation de l' new
- crée un COUPLAGE étroit qui est difficile à changer. (c'est un tout petit exemple artificiel après tout)
Donc, si, au lieu de newing ce mauvais garçon jusqu'à l'intérieur de WorkflowStepper, vous venez de passer dans le constructeur?
Alors celui qui a appelé il y avait à nouveau le EmailSender.
new WorkflowStepper(emailSender).Step()
Imaginez que vous avez des centaines de ces petites classes qui ont qu'une seule responsabilité (google SRP).. et que vous utilisez un peu dans WorkflowStepper:
new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()
Imaginez ne pas se soucier des détails d' EmailSender
lorsque vous écrivez WorkflowStepper
ou AlertRegistry
Vous venez de vous soucier de l'inquiétude que vous travaillez avec.
Imaginez tout ce graphique (arbre) des objets et des dépendances obtient filaire au MOMENT de l'EXÉCUTION, de sorte que quand vous faites cela:
WorkflowStepper stepper = Container.Get<WorkflowStepper>();
vous obtenez une vraie affaire, WorkflowStepper
avec toutes les dépendances automatiquement remplir lorsque vous en avez besoin.
Il n'y a pas d' new
Il vient de se passe - parce qu'il sait ce qui doit ce qui.
Et vous pouvez écrire le moins de défauts avec des mieux conçus, SEC code dans un vérifiables et reproductibles.