티스토리 뷰

DI, IoC

Dependency Injection (의존성 주입) 은 어떤 클래스가 의존하는 클래스를 인터페이스를 도입하여 의존성을 독립화하고 런타임에 의존 클래스를 결정할 수 있게끔 하는 기법이다. 의존 클래스를 런타임에 맘에 드는 걸로 골라서 "삽입" 해줄 수 있어서 의존성-주입 이라고 불릴 것이다.

클래스 A가 클래스 B를 참조하던 걸, 클래스 B의 인터페이스 IB를 도입하여 클래스 B를 교체할 수 있게 하고 런타임에 A에 IB를 구현하는 B2 등의 클래스를 사용할 수 있다.

→ 원래는 개발자가 클래스를 만들어서 객체를 만들었다면, 객체 대신 프레임워크가 인터페이스에 해당하는 객체를 삽입해주므로 제어가 반전된다고 해서 IoC.

아래처럼만 해줘도 DI이지만 보통은 프레임워크가 생성자에 대신 넣어줌.

public void MyClass {
    IDep1 _dep1;
    IDep2 _dep2;
    public MyClass(IDep1 dep1, IDep2 dep2) {
        _dep1 = dep1;
        _dep2 = dep2;
    }
}

public static class Program {
    public static void Main() {
        MyClass(new Dep1(), new Dep2());
    }
}

서비스 로케이터

안티 패턴.

https://www.devtrends.co.uk/blog/how-not-to-do-dependency-injection-the-static-or-singleton-container

TBD

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함