2010-04-04 4 views
0

L'avantage de l'inversion du contrôle est qu'il dissocie les objets des mécanismes de recherche spécifiques et des implémentations des objets dont il dépend. En conséquence, plus de flexibilité est obtenue pour les applications de production ainsi que pour les tests.Mécanisme d'injection de dépendances

qu'est-ce que cela signifie réellement?

+0

Manière indirecte pour éviter le codage coûteux que nous devrions –

Répondre

0

Un bon exemple d'IoC est la simulation de base de données. Pendant que vous écrivez une application, vous devrez peut-être conserver des objets pour les récupérer ou les utiliser plus tard. Eh bien, faire abstraction de la base de données, vous créez une interface avec une méthode comme ceci:

Interface DbSaver 
+void save(MyObject myObject) 
+MyObject load(String id) 

Sans IoC, vous auriez quelque chose comme ceci:

DbSaver saver = new DefaultDbSaver(); 

ou, vous définiriez juste une mise en œuvre et l'accès comme un singleton (qui semble d'abord approprié pour un objet de manipulation de base de données):

MyDbSaver saver = MyDbSaver.getInstance(); 

Avec IoC, vous pouvez changer la mise en œuvre de DbSaver sans même recom empiler votre application (au moins Spring fournit cela). Autrement dit, sans changer de code, vous pouvez choisir d'utiliser une implémentation plutôt qu'une autre. Avec les objets d'accès à la base de données, la chose la plus courante est de créer une implémentation par défaut qui stocke tout en mémoire. À mesure que vous finalisez la conception, la structure ou la technologie de votre base de données, vous pouvez continuer à créer votre application sans vous soucier de la façon dont les données sont conservées. Vous travaillez simplement dans l'interface. De cette manière, les objets métier sont découplés de l'intégration de la base de données, ce qui présente l'énorme avantage de permettre le développement simultané des deux pièces.

+0

ce que j'ai obtenu est: ioc le rend flexible pour assigner l'implémentation particulière d'une interface particulière en changeant simplement la configuration. donc ainsi il rend flexible .. corrigez-moi si je me suis trompé ou partiellement .. // Merci pour votre réponse .. –

+0

Voilà à peu près l'idée, abc! –