Vous pouvez construire des structures de données de haut en bas - le continent construit la ville - ou de bas en haut - le continent construit la ville. main
construit la ville et la transmet au pays, ou en utilisant une combinaison des deux. DI privilégie cette dernière solution.
public static void main(String... argv) {
// Bottom up.
City city = new City(/* args relevant to city */);
Country country = new Country(city, /* args relevant to country */);
Continent continent = new Continent(country, /* args relevant to continent */);
Planet planet = new Planet(continent, /* args relevant to planet */);
}
class City {
City(/* few parameters */) { /* little work */ }
}
class Country {
Country(/* few parameters */) { /* little work */ }
}
...
class Planet {
Planet(/* few parameters */) { /* little work */ }
}
qui peut être beaucoup plus propre que la méthode descendante :
public static void main(String... argv) {
// Top down.
Planet earth = new Planet(
/* all the parameters needed by Earth and its dependencies. */);
}
class Planet {
Planet(/* many parameters */) { /* lots of work */ }
}
...
Les adeptes du DI soutiennent que la construction ascendante permet d'obtenir un code beaucoup plus facile à maintenir et à tester, mais vous n'avez pas besoin d'un cadre DI pour l'utiliser.