さっきデザパタはいらないとか言ってたプログラマー来い
■ このスレッドは過去ログ倉庫に格納されています
お前らは知らぬ間にFactoryMethodとか使ってるからな まずDIPやDIなんかはそもそもSOLID原則由来であってクリーンアーキテクチャだから使うとかでもない 基本的な大規模WebフレームワークではDIコンテナがビルトインかつ必須なものも多々ある 結合テストならデータベース含めテストすべきだが単体テストではデータベースなどの機能外のものを含めるべきじゃない 依存性注入はグローバル変数などではない
クラスが依存するクラスを増やす事をいう
DI自体はお前らが何も考えず日常的にやっていること class HogeService {
private final PiyoRepository;
private final HugaRepository;
private final HageRepository;
public HogeService(
PiyoRepository piyoRepo,
HugaRepository hugaRepo,
HageRepository hageRepo
) {
中略
}
}
こんなクラスがあったとしよう。
これを律儀にDIするなら次のようになる
var piyoRepo = new PiyoRepository();
var hugaRepository = new HugaRepository ();
var hageRepository = new HageRepository ();
var hogeService = new HogeService(
piyoRepo, hugaRepo, hageRepo);
いちいちこんなふうにインスタンスを作成してコンストラクタに入れていかなきゃいけない。
リポジトリも別のクラスに依存している場合は更に複雑になる。
このインスタンスの生成を自動でやってくれるのがDIコンテナ
DIコンテナは一つのインスタンスを使い回すのではなくインスタンスの生成および依存性の解決を勝手にやってくれるもの。 そもそも学校で習う程度の知識なのによくDIをグローバル変数とかおかしな事抜かせるな デザパタいらんとかIteratorすらも使ってないのかな ■ このスレッドは過去ログ倉庫に格納されています