의존성

    [Design Pattern] 커맨드 패턴이란 무엇인가?

    커맨드 패턴 커멘드 패턴은 하나의 객체를 통해 여러 객체들에 명령(Command)을 해야 할 때 사용되는 패턴이다. 커멘드 패턴을 사용하면 요청을 캡슐화해서 커멘드 객체가 명령을 해야하는 객체들에 대한 의존성을 느슨하게 만들 수 있다. 이 말이 무슨 말일까? 커멘드 패턴을 사용하지 않으면 여러 객체들에 명령(Command)를 하기 위해서는 명령을 하는 객체(커멘드 객체)가 명령을 받는 객체들을 알아야 한다. 예를 들어 집 안의 조명을 제어하는 LightController 클래스가 있다고 해보자. LightController는 제조사가 다른 조명들(MainLight, SubLight, BedRoomLight)에 대한 제어를 한다. LightController는 조명을 제어하기 위해 각 조명을 제어하는 메서..

    [Dagger2] 8. Scope를 이용한 객체 재사용 범위 설정

    예제 링크 : https://github.com/seyoungcho2/Dagger2Example 이 글은 예제7,8,9과 함께 한다. Scope란? Dagger2의 역할은 외부에서 의존성을 주입해주는 것이다. 여기서 문제점이 생긴다. 외부(Container)에서 제공하는 인스턴스들이 한 번만 생성되어도 되는데 호출할 때마다 생성된다면 불필요한 메모리 사용이 생긴다. Dagger2에서는 이를 해결하기 위해 Scope Annotation을 이용해 같은 범위(Scope)의 내에서 객체들을 관리하게 된다. Scope Annotation이 적용된 Provider은 범위(Scope) 내에서 한 번만 객체를 생성한다. Dagger에서는 Scope Annotation을 이용해 한 번 생성된 객체가 재사용되는 범위(Sc..

    [Dagger2] 3. Component Injection 메서드 - 프로비전(Provision)

    Interface로서의 Component 앞서 Component는 Interface의 역할을 한다고 하였다. Component Interface에서 제공되는 함수는 두 가지가 있을 수 있다. 하나는 프로비전 메서드로 그 자체로 Provider에 의해 반환되는 인스턴스를 반환하는 메서드이며, 다른 하나는 멤버 인젝션 메서드로 인자로 받는 인스턴스에 Provider에 의해 반환되는 인스턴스를 제공하는 메서드이다. 우리는 이 둘을 다음과 같이 부른다. 프로비전(Provision) 메서드 그 자체로 Provider에 의해 만들어진 인스턴스나, 프로퍼티가 주입된 인스턴스를 반환하는 메서드 멤버 인젝션(Member Injection) 메서드 인자로 받는 인스턴스에 Provider에 의해 반환되는 인스턴스를 제공하는..

    [Dagger2] 2. Dagger2에서 Injection이 일어나는 방식

    Dagger2의 IOC Container 구성 앞의 글에서 Dagger2의 3가지 구성요소 Container, Module, Provider에 대해 배웠다. Component : 클래스의 인스턴스를 모아놓는 저장소(Container) 역할. 각 인스턴스들은 Module 단위로 제공된다. Module : Module 단위로 클래스의 인스턴스를 모아놓는 역할 Provider : 클래스의 인스턴스를 제공(Provide)해주는 역할 이제 각 부분이 어떤 역할을 하는지 알았으므로 더욱 상세히 정리해보고자 한다. Dagger2을 이용해 의존성 주입 구현하기 앞의 글에서 다음과 같은 그림을 본 적이 있다. 는 의존성을 약화시키기 위한 인터페이스의 역할에 대해 설명하면서 나온 그림이다. CPU Time을 구하기 위해 ..