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
- 함수형프로그래밍
- a
- 디자인패턴
- factory method
- PrototypePattern
- El
- builderPattern
- Abstract Factory
- 코틀린
- Kotlin
- ㅓ
- Singleton
- 옵저버 패턴
- 디자인패턴 #
- Observer Pattern
- designPattern
- 추상팩토리패턴
- 싱글톤
- 추상 팩토리
- ㅋㅁ
- Functional Programming
- 팩토리 메소드
- 빌터패턴
- r
- F
- 프로토타입 패턴
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Dependency Inversion Principle 본문
객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다.
이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.
첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.
둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.
이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다'는 객체 지향적 설계의 대원칙을 제공한다.
예를 들어 동물원인 상위 모듈과 그 하위 모듈로 사자와 곰이 있다고 하자.
class Zoo(
val lions: List<Lion>,
val bear: List<Bear>,
)
class Bear()
class Lion()
그리고 추후에 코끼리가 동물원 새롭게 들어왔다면, 아래와 같이 수정이 필요하다.
class Zoo(
val lions: List<Lion>,
val bears: List<Bear>,
val elephants: List<Elephant>
)
class Bear()
class Lion()
class Elephant()
즉, 새로운 동물이 추가 될때마다 상위 모듈의 새로운 하위 모듈의 의존성으로 인해 지속적으로 코드를 수정할 필요하가 있고 점점 더 의존성항목이 늘어날것이다.
class Zoo(
val animals: List<Animal>
)
abstract class Animal()
class Bear(): Animal()
class Lion(): Animal()
class Elephant(): Animal()
이렇게 추상클래스 또는 인터페이스를 사용하여 추상적 개념인 animal 클래스를 생성하여 상위 모듈인 동물원은 추상 클래스인 animal에 의존하고 하위 모듈인 곰 사자 코끼리또한 추상 클래스인 animal에 의존한다.
'디자인패턴' 카테고리의 다른 글
Observer pattern(옵저버 패턴) (0) | 2022.07.18 |
---|---|
전략패턴(Strategy Pattern) (0) | 2022.07.11 |
Interface Segregation (0) | 2021.12.28 |
리스코프 치환법칙(Liskov Substitution) (0) | 2021.12.28 |
Open-Closed Principle (0) | 2021.12.24 |