소프트웨어(Software)
[소프트웨어] dip (비공개)
2022. 1. 6. 10:54반응형
SOLID 원칙 중 의존성 역전 원칙에 대해서 들어봤을 것이다.
그래서 뭐 어쩌라는 건가?
뭐가 나쁜 예시고, 뭐가 좋은 예시라는 건가?
그것에 대한 생각은 아래에 있다.
우선,
의존성 역전 원칙을 지켜라라는 말은 아래와 같다.
객체는 저수준 모듈보다 고수준 모듈에 의존해야한다는 원칙이다.
* 고수준 모듈 : 인터페이스와 같은 객체의 형태나 추상적 개념
* 저수준 모듈 : 구현된 객체
아래에 예시가 있다.
우선, 간단하게 스토리를 짜본다.
- 컵을 생성하는 공정은 여러개가 될 수 있다. (컵공정A, 컵공정B)
- 컵공정에 들어가는 통제정책은 여러개 될 수가 있다. (컵공정_권한통제정책A, 컵공정_권한통제정책)
- 이때, 컵공정_권한통재정책은 컵공정을 객체로 가지게 되된다.
즉, 나쁜 예시는 아래이고,
아래 예시의 단점은, 컵공정_권한통제정책A가 오로지 컵공정A()의 생성을 받고 있다는 것.
class 컵공정_권한통제정책A implements 컵공정 {
컵공정 = new 컵공정A();
...
}
좋은 예시는 아래이다.
하지만, 아래처럼, 인터페이스를 인자로 받아 사용하면,
여러 컵공정에 대해서, 권한통제A를 이용할 수 잇게 된다.
class 컵공정_권한통제A implements 컵공정 {
컵공정 process;
public 컵공정_권한통제A(컵공정 process) {
this.process = process;
}
}
이 SOLID 원칙을 만든 사람이 하고 싶은 말은,
너가 다른 모듈/레이어의 객체를 생성해서 쓸 때,
그것이 인터페이스로 정의된 인자로 받아서 쓸 수 있는 지를 먼저 검토하고, 그걸 써라라는 의미이다.
의존성 역전 원칙에 대한 개념/정의는 누구나 다 알 것이다.
하지만, 그 원칙을 지켰냐 못지켰냐에 대한 설명은 잘 없는 것 같아서 정리해보았다.
반응형
'소프트웨어(Software)' 카테고리의 다른 글
(비공개) [디자인패턴] Proxy 패턴 (프록시패턴) (0) | 2022.01.06 |
---|---|
[디자인패턴] Composite패턴(컴포지트패턴)이란? (0) | 2022.01.06 |
[UML] PlantUML 툴 추천 (0) | 2022.01.04 |
[소프트웨어] 요구공학이란? (소프트웨어 요구사항 명세서) (0) | 2022.01.03 |
알고리즘 설계 단계 (수정중) (0) | 2021.12.29 |