依存注入


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();
    }
  • Example 1は、dbのような受信オブジェクトのオブジェクトをクライアントに送信し、サービスはオブジェクトをクライアントに送信するコードであり、
  • .

    2.DIを行う理由


    Dependency Inversion Principle

  • 高レベルのオブジェクトは、低レベルのオブジェクトに依存してはいけません.下位レベルのオブジェクトに依存している場合は、オブジェクトを変更するときに上位レベルのオブジェクトコードを変更する必要がある場合があります.

  • したがって、コードは抽象体に依存しなければならない.抽象体に依存するため,分離して実現できる.

  • 上記の例では、MySQLオブジェクトをPostgreSQLオブジェクトに置き換えると、Example 1コードを変更せずに作業できます.これは、クライアントがどのサービスを使用するかを選択せず、プロジェクタがどのサービスを使用するかを決定するためです.