日本語
[面接の質問] 依存性注入

[面接の質問] 依存性注入

DIに関する面接の質問まとめ

依存性注入

依存性:あるオブジェクトが別のオブジェクトを利用している関係 → 依存性注入:その関係を設定すること

依存性注入が必要な理由?

public class Product {

	private Apple apple;
    
    public Product() {
    	this.apple = new Apple();
	}

}

このように例を見てみると、ProductというクラスがAppleのコンストラクタを使用している場合、別途注入を受けずにそのまま使用している。 Productを使用する場合、Appleがそのまま付随してくる依存関係として理解できる。 こうなると、オブジェクト同士のつながりではなく、クラス間の関係だと見なすことができる。

また、もし私がOrange

というクラスを追加で使用したい場合、Productクラスのコンストラクタに直接変更を加える必要があり、これは柔軟性が低いと言える。

結論として、依存性注入が必要な理由を挙げると

クラス間の強い結合 + コードの柔軟性の低下

このような問題を依存性注入によって解決できるため、必要であると言えるだろう!

解決策の適用

public interface Fruit {

}

public class Apple implements Fruit {

}

public class Product {

	private Fruit fruit;
    
    public Product(Fruit fruit) {
    	this.fruit = fruit;
    }
    
}

各クラスが独立性を確保していることが確認できる。

  1. 新しいFruitを追加してもProductは変わらない
  2. クラス間の関係ではなく、オブジェクト間の関係が形成される

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0