개발관련/other

Inversion of Control 에 대해서

Rateye 2021. 10. 25. 11:13
728x90
반응형
질문 : Inversion of Control이란 무엇입니까?

IoC (Inversion of Control)는 처음 발생했을 때 매우 혼란 스러울 수 있습니다.

답변

IoC (Inversion of Control) 및 DI (Dependency Injection) 패턴은 모두 코드에서 종속성을 제거하는 것입니다.

예를 들어 응용 프로그램에 텍스트 편집기 구성 요소가 있고 맞춤법 검사를 제공하려고한다고 가정합니다. 표준 코드는 다음과 같습니다.

public class TextEditor {

    private SpellChecker checker;

    public TextEditor() {
        this.checker = new SpellChecker();
    }
}

TextEditorSpellChecker 사이에 종속성을 생성합니다. IoC 시나리오에서는 대신 다음과 같은 작업을 수행합니다.

public class TextEditor {

    private IocSpellChecker checker;

    public TextEditor(IocSpellChecker checker) {
        this.checker = checker;
    }
}

첫 번째 코드 예제에서는 SpellChecker ( this.checker = new SpellChecker(); TextEditor SpellChecker 클래스에 직접 의존한다는 것을 의미합니다.

TextEditor SpellChecker 종속성 클래스를 포함하여 추상화를 만듭니다 (클래스에서 종속성을 초기화하지 않음). 이를 통해 종속성을 호출 한 다음 다음과 같이 TextEditor 클래스에 전달할 수 있습니다.

SpellChecker sc = new SpellChecker(); // dependency
TextEditor textEditor = new TextEditor(sc);

TextEditor 클래스를 만드는 클라이언트 TextEditor 서명에 주입하기 때문에 사용할 SpellChecker

출처 : https://stackoverflow.com/questions/3058/what-is-inversion-of-control
728x90
반응형