본문 바로가기

728x90

Dependency Injection

(5)
Dependency Injection - Chapter1 마지막(DIScope, Summary) 앞서 설명했듯이 DI의 중요한 요소는 다양한 책임 관계를 별도의 클래스로 나누는 것입니다. 클래스에서 분리하는 책임 중 하나는 의존성의 인스턴스를 생성하는 작업입니다. Hello DI! 예제에서 Salutation 클래스에서 종속성 생성 책임이 해제된 예제에서 이에 대해 설명했습니다. 대신 이 책임이 애플리케이션의 Main 메서드로 옮겨졌습니다. 클래스가 종속성에 대한 제어권을 포기하면 특정 구현을 선택하는 것 이상의 것을 포기하는 것입니다. 이느 개발자로서 몇 가지 이점을 얻을 수 있습니다. 처음에는 클래스가 어떤 객체가 생성되는지에 대한 제어권을 포기하는 것이 불리한 것처럼 보일 수 있지만, 제어권을 잃는 것이 아니라 다른 곳으로 옮기는 것일 뿐입니다. 개발자는 종속성에 대한 클래스의 제어권을 제거함..
Dependency Injection - What to inject and what not to inject 이전 섹션에서는 DI에 대해 생각하게 만드는 동기를, 또 느슨한 결합이 얼마나 중요한지와 인터페이스에 대한 프로그래밍이 어떻게 초석이 되는지 설명했습니다. 느슨한 결합이 이점이 있다고 확신한다면 모든 것을 느슨하게 결합하고 싶을 수도 있습니다. 전반적으로 좋은 생각입니다. 모듈을 패키징하는 방법을 결정해야 할 때 느슨한 결합은 특히 유용합니다. ***하지만 모든 것을 추상화하여 플러그형으로 만들 필요는 없습니다. *** 이 섹션에서는 종속성을 모델링하는 방법을 결정하는 데 도움이 되는 몇 가지 의사 결정 도구를 소개합니다. 모든 종속성을 동일하게 취급할 필요는 없습니다. 위험을 초래하지 않는 유형과 애플리케이션의 결합 정도를 강화할 수 있는 유형을 구분하는 방법을 아는 것이 중요합니다. 주로 후자에 집중..
DependencyInjection : (간단한 예제와 DI 이점) 수많은 프로그래밍 교과서의 전통에 따라 화면에 "Hello DI!"를 출력하는 간단한 콘솔 애플리케이션을 구성해보겠다. 또 DI가 주는 이점에 대해 설명하려 한다. 한 줄의 코드로 작성된 Hello World 예제를 본 적이 있을것이다. 그 쉬운 예제를 여기서는 좀 더 복잡하게 만들어 보겠다. Collaborators 프로그램의 구조는 아래와 같다. 플랫폼/언어와 상관없이 이해를 돕도록 Main메서드를 예시로 든다. func Main() { let wirter: IMessageWriter = ConsoleMessageWriter() let salutation = Salutation(writer) salutation.exclaim() } 콘솔에 메시지를 출력하는 기능을 캡슐화한 IMessageWriter..
DependencyInjection - What, Why, and How(Understanding Perpose of DI, Petterns) Understanding Perpose of DI 앞선 게시물 에서 말했듯 DI는 최종 목표가 아니라 목적을 위한 수단일 뿐이다. DI는 느슨한 결합을 가능하게 하고 이는 코드를 더 쉽게 유지관리 할 수 있게 만든다. 이 중요한 메시지를 전달하기 위해 소프트웨어 설계와 몇 가지 설계패턴을 전기 배선과 비교해 보겠다. 매우 쉬운 비유를 들 예정이므로 비전문가에게 소프트웨어 설계를 설명할 때도 이 비유를 사용하면 좋다. 아래에서 설명하겠지만 이 비유에서는 네 가지 특정 디자인 패턴을 자주 언급할 것이다. 그 이유는 이패턴들이 DI와 관련하여 자주 발생하기 때문이다. 이 책에서는 이 중 세 가지 패턴인 데코레이터, 컴포지트, 어댑터 에 대한 예시를 많이 볼 수 있다. Checking Into a Cheap H..
DependencyInjection - What, Why, and How (DI에 대한 오해) 재작년 부터였던가. 매번 읽자 읽자 하다가 내용도 어렵고 너무 방대한 분량 때문에 미뤘던 책 Dependency Injection Principles Practices and Patterns (종속성 주입 원칙 사례 및 패턴) 을 드디어 읽기 시작했다. 사실 영문으로 되어 있기 때문에 번역기로 돌려서 읽는 중이지만… 한글로 번역된 문장들도 쉽게 읽히지 않는것은 내 머리의 한계를 탓할수 밖에 없다. 어쨌거나. 이 ‘의존성 주입’ 카테고리에 포스팅할 내용들은 Dependency Injection Principles, Practies, and Patterns 을 번역, 요약한 글들과 마치 책에 실린 내용인것 마냥 위장하고 있는 내 의견이 있을 예정이다. 시작은 조금 쉬운 내용으로 시작한다. The Depend..

728x90