티스토리 뷰
[Clean Architecture] 4. Crossing Boundaries(교차 경계)와 DIP(의존성 역전 원칙)
Zartt 2022. 6. 19. 15:12그럼 가장 안쪽 Layer에서 바깥 Layer로는 전혀 이동이 불가능한가?
Apdater는, “Domain과 Infrastructure 사이의 번역기 역할을 수행한다.” 라고 언급 했었다.
이 때 흐름은 Controller → Use case → Presenter로 흐르게 된다.
이처럼 제어의 흐름이 원의 내부에서 외부로 향하는 것을 Crossing Boundaries 라고 한다.
하지만 위 흐름을 그대로 따른다면 Dependency Rule을 위반하게 된다.
High-level인 Use case는 Low-level인 Presenter를 의존해서는 안되기 때문이다.
그래서 의존성 역전 원칙(DIP)을 적용하게 된다.
의존성 역전 원칙이란, 고수준 모듈이 저수준 모듈을 의존하는 것이 아니라, 저수준 모듈이 고수준 모듈에서 정의한 추상 클래스에 의존하는 것을 의미한다.
즉, 제어흐름의 방향과 반대로, 호출당하는 쪽에서 호출 하는 쪽으로 의존하는 것을 의미한다.
이를 통해 직접적인 의존성을 끊고 의존성을 낮출 수 있다.
의존성 역전 원칙을 적용하지 않은 흐름은 위 흐름과 같다.
의존성 역전 원칙을 적용하면 아래 흐름처럼 내부 Layer는 외부 Layer의 Interface(Protocol in Swift)를 참조하고, 외부 Layer에서 해당 Interface를 구현한다.
Clean Architecture에서의 흐름으로 보자면,
검은색 바탕 화살표는 호출하는 방향
하얀색 바탕 화살표는 해당 인터페이스를 구현한다는 의미
즉 위 사진의 의미는 다음과 같다.
Use case Interactor가 Use case Input Port를 구현하고,
Controller가 Use case Input Port Interface를 참조하고 있다가 호출한다.
Presenter가 Use case Output Port를 구현하고,
Use case Interactor가 Use case Output Port Interface를 참조하고 있다가 호출한다.
'Develop > 아키텍처' 카테고리의 다른 글
[Clean Architecture] 3. Layer와 Dependency Rule (0) | 2022.06.18 |
---|---|
[Clean Architecture] 2. What is Clean Architecture (0) | 2022.02.19 |
[Clean Architecture] 1. Why Clean Architcure? (0) | 2022.02.19 |
MVC Pattern (0) | 2021.08.22 |
아키텍처와 디자인 패턴 (0) | 2021.08.22 |
- Total
- Today
- Yesterday
- TabBar
- remote
- Crossing Boundaries
- 프로비저닝
- ios
- RxSwift
- 프로비저닝 프로파일
- 아키텍처
- rxcocoa
- 동적계획법
- CSR
- APNS
- MVC
- certificate
- provisioning profile
- Clean Architecture
- 코테
- notification
- Swift
- Apple
- 코드사이닝
- MVVM
- Push
- relay
- Rx
- 클린아키텍처
- dip
- subject
- TextField
- 프로파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |