Question

Une métaphore qui a collé avec moi lors de la programmation des systèmes non-DI est « une personne qui joue avec ses jouets / ses ». Une personne étant un objet et les jouets de la personne tout ce qui objet crée, stocke, initialise et manipule. Les jouets peuvent distribuer des événements quand ils atteignent un certain état, mais ils ne savent rien de la personne qui les utilise; ils sont juste de petites boîtes noires avec des commutateurs de commande qui composent leurs interfaces. La personne peut écouter les événements des jouets et répondre en manipulant leurs interfaces. La personne peut faire ce qu'il / elle veut avec ses jouets / ses, mais il / elle ne devrait probablement pas se mêler de leurs entrailles, car ils pourraient se briser.

Les ravages que DI sur ma métaphore assouvit est qu'il transforme les jouets en êtres conscients qui connaissent leur propriétaire, la personne qui les utilise. Les jouets peuvent manipuler cette personne, mais la personne ne sait rien de la façon dont ils travaillent et ne même pas soin. La personne possède juste les jouets et attend les jouets pour le manipuler / elle pour sa propre satisfaction des jouets.

WTF ?? Cela semble horrible !!
Qu'est-ce qu'une bonne métaphore mentale qu'ils ont eu recours à penser à comment fonctionnent les systèmes DI?

Était-ce utile?

La solution

Le solide images de motivation sont une bonne source.

métaphore du principe d'injection de dépendance

Autres conseils

Pensez un gentleman et son maître d'hôtel. Le maître d'hôtel (le cadre de DI) fournit au monsieur tous les services (dépendances externes) dont il a besoin à la demande (et certains, comme le café du matin, sur :-) « d'initialisation »); le monsieur (votre classe) ne consomme que les services et ne se soucie pas d'où ils viennent, aussi longtemps qu'ils répondent à ses besoins (mettre en œuvre certaines interface).

Ou si vous voulez faire plus proche de votre métaphore, votre classe est l'enfant, le cadre DI est la maman, et les jouets sont les autres composants. L'enfant ne se soucie pas où les jouets viennent, aussi longtemps qu'elle peut jouer la façon dont elle veut avec eux.

De mon point de vue la différence entre DI et non-DI par rapport à votre métaphore est avec les systèmes non-DI, chaque personne fait leurs propres jouets - ils doivent savoir comment les faire et ils ne peuvent utiliser les jouets qu'ils faire. Avec DI, la personne utilise les jouets qui leur sont données. Ils ne savent pas comment les faire, mais ils peuvent jouer avec des jouets qui leur sont données aussi longtemps qu'ils savent comment le jouet se comporte.

Legos.

Pensez à un bloc Lego comme un composant logiciel qui expose une ou plusieurs interfaces (les petites bosses sur le dessus) et a une ou plusieurs poseurs ou arguments du constructeur (les trous du bas).

Lorsque vous achetez une boîte de Legos, les blocs ne sont pas prémonté (câblé). Ils sont des composants indépendants. Vous les assembler ensuite (les fils) en connectant les interfaces (bosses) à setters / constructeurs (trous). Chaque bloc ne sait rien sur les autres blocs directement. Autre chose que le bloc est nécessaire pour les assembler - (. Ou main () ou un fichier de configuration Spring, etc.). Qui vous

Je sais ... Cela revient un peu parce que Legos ont en grande partie une interface uniforme - mais il fonctionne pour moi: -)

J'utilise le système informatique. Vous disposez d'un bloc de système, et vous (DI) se connecter à un moniteur, un clavier et une souris. Le bloc système sait seulement qu'un moniteur est un périphérique DVI, mais prend soin pas qui surveillent précisément c'est. Il sait comment utiliser USB-souris, mais ne sait pas ou il est temps de soins d'une optique ou une souris roulement à billes.

- le cadre DI
. Bloc système - est le système étant servi
. Moniteur / clavier / souris - services fournis par DI (vous) au bloc du système.

Les jouets ne sont pas conscients. Ils viennent de laisser les bits de cravate personne de ficelle à des crochets, et quand certaines choses se produisent, les crochets tournent et la chaîne obtient enfila, de sorte que la personne sait quelque chose est arrivé.

Une métaphore DI qu'on m'a dit était de rapporter à était celle d'un lecteur de CD. Le joueur ne se soucie pas ce CD vous mettre dans; Cependant, chaque CD que vous injectez dans le lecteur fournit des fonctionnalités différentes en fonction de ce que le joueur a besoin de lui.

Il est tout au sujet de Samouraïs et des armes. Essayez de vérifier ninject: http://ninject.org/ . Accédez au caractère « Visitez le Dojo » pour une métaphore intéressante. Je ne sais pas si cela est ce que vous vouliez dire, mais il est néanmoins créatif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top