J'ai une classe A
qui fonctionne avec List<String>
. Mais personne en dehors de cette classe ne devrait avoir besoin de savoir que cela fonctionne avec des cordes. Cependant, je veux aussi fournir l'implémentation concrète que la classe devrait utiliser pour List
(via l'injection de dépendance).Dependecy Injection des collections
A
devrait ressembler à ceci
public class A {
private ListFactory listFactory; //this gets injected from the outside
public A(ListFactory listFactory) {
this.listFactory = listFactory;
}
public void a() {
List<String> = listFactory.createList();
//...
}
}
Et la classe appelant B
quelque chose comme ça
public class B {
public void b() {
ListFactory factory = new ArrayListFactory(); //we want class A to use ArrayList
A a = new A(factory);
//...
}
}
ListFactory
serait une interface qui est mis en œuvre par ArrayListFactory
pour créer ArrayList
s.
Quintessence: Je ne veux pas que B
doit mentionner quelque part String
. Et je ne veux pas non plus que A
doit mentionner ArrayList
quelque part.
Est-ce possible? Et comment regarder ListFactory
et ArrayListFactory
?
Wow. THX! Je ne connaissais même pas cette syntaxe. Je dois regarder ça ... C'est exactement ce que je voulais. – qollin
Bien, j'ai raté ça aussi. –