依存注入
1. Dependency Injection
=注入依存性
Dependency:クラスに必要な他のオブジェクト
Dependency Injection:依存性をクラスに注入します.クラスに依存オブジェクトを作成するのとは逆に
// DI하는 경우
Class Example1 {
private Database db;
public Example1(Database db) {
this.db = db;
}
}
Class Injector {
Database db = new MySQL();
Example1 ex1 = new Example1(db);
}
// DI하지 않는 경우
Class Example2 {
private Database db = new MySQL();
}
Class Host {
Example2 ex2 = new Example2();
}
2.DIを行う理由
Dependency Inversion Principle
高レベルのオブジェクトは、低レベルのオブジェクトに依存してはいけません.下位レベルのオブジェクトに依存している場合は、オブジェクトを変更するときに上位レベルのオブジェクトコードを変更する必要がある場合があります.
したがって、コードは抽象体に依存しなければならない.抽象体に依存するため,分離して実現できる.
上記の例では、MySQLオブジェクトをPostgreSQLオブジェクトに置き換えると、Example 1コードを変更せずに作業できます.これは、クライアントがどのサービスを使用するかを選択せず、プロジェクタがどのサービスを使用するかを決定するためです.
Reference
この問題について(依存注入), 我々は、より多くの情報をここで見つけました https://velog.io/@sangmin7648/Dependency-Injection-이란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol