Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 옵저버 패턴
- Design Pattern
- 코틀린
- Functional Programming
- Observer Pattern
- 프로토타입 패턴
- El
- a
- builderPattern
- ㅋㅁ
- 함수형프로그래밍
- 빌터패턴
- 디자인패턴 #
- 싱글톤
- 팩토리 메소드
- 디자인패턴
- Kotlin
- 추상팩토리패턴
- r
- PrototypePattern
- designPattern
- Abstract Factory
- ㅓ
- factory method
- Singleton
- F
- 추상 팩토리
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
의존성 주입이란? 본문
의존성(Dependecy)
- 객체 지향 프로그래밍 관점에서 의존성은 어떤 클래스가 다른 클래스를 필요로 하는 것
- 아래 코드는 Computer 클래스는 cpu와 memory에 대해서 의존적이다.
- Cpu Memory를 Computer가 생성 및 관리하며 Cpu와 Memory 각각 한 가지 Type에 의존한다.
public class Cpu { ..... }
public class Memory{ .... }
public class Computer{
private Cpu cpu;
private Memory memory;
public Computer(){
cpu = new Cpu();
memory = new Memory();
}
}
주입(Injection)
- 생성자 및 메소드등을 통해서 외부로부터 생성된 객체를 받는 것
- Interface 사용하여 cpu와 memory는 1가지 타입에 의존적이지 않다
- constructor, setter를 사용하여 Computer클래스 밖에서 생성되어 할당된다 (주입)
public Interface Cpu { ..... }
public Interface Memory { .... }
public class IntelCpu implements Cpu { .... }
public class AmdCpu implements Cpu { .... }
public class SamSungMemory implements Memory { .... }
public class IntelMemory implements Memory { .... }
public class Computer{
private Cpu cpu;
private Memory memory;
public Computer(){}
public Computer(Cpu cpu, Memory memory){
this.cpu = cpu;
this.memory = memory;
}
public void setCpu(Cpu cpu){
this.cpu = cpu;
}
public void setMemory(Memory){
this.memory = memory;
}
}
의존성 주입의 장점
- 의존성 주입은 인터페이스 기반으로 설계되며 코드를 유연하게 한다.
- 주입되는 코드 위에선(Cpu, Memory)만 따로 변경하여 리팩터링이 쉽다.
- 단위테스트를 하기에 편해진다.
- 인터페이스 기반으로 설계하여 독립적인 개발이 편해진다.
- 지속적인 유지보수할 경우 높은 생산성을 보장한다.
의존성 주입의 단점
- 매우 간단한 프로그램을 만들 때는 번거롭다.
- 동작과 구성을 분리해 코드를 추적하기 힘들다(개발자는 더 많은 파일을 봄으로써 코드를 이해해야 됨)
'DI > Dagger2' 카테고리의 다른 글
Android app에서 Dagger 사용 (0) | 2021.05.03 |
---|---|
Dagger Basic (0) | 2020.11.30 |
수동 종속성 삽입 (0) | 2020.11.30 |
Android의 종속 항목 삽입 (0) | 2020.11.24 |
Dagger2 (안드로이드 의존성 주입 프레임워크)란? (0) | 2020.08.04 |