大陸が都市を構築するトップダウンからデータ構造を構築することも、都市を構築してそれを国に渡すボトムアップからmain
構築することも、いくつかの組み合わせを使用して構築することもできます。DI は後者を支持します。
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 */ }
}
これは、トップダウンよりもはるかにクリーンです。
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 */ }
}
...
DI 関係者は、ボトムアップ構造は保守性とテスト性に優れたコードにつながると主張していますが、それを使用するために DI フレームワークは必要ありません。