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
- 오블완
- SWIFT
- 야곰 # 야곰아카데미커리어스타터캠프 #iOS개발자 # 부트캠프
- WWDC
- modern concurrency deep dive
- modern concurrency
- 티스토리챌린지
- APNS
- ios
Archives
- Today
- Total
Geon
SOLID - DIP 본문
Dependency Inversion Principle (의존성 역전)
상위 수준의 모듈은 하위수준의 모듈에 의존해서는 안된다.
구체적인 사항은 추상화에 의존해야 한다.
왜 하위수준의 모듈에 의존하면 안될까??
하위수준의 모듈 즉 구체타입은 변화가 많지만 상위모듈인 추상타입은 잘 안변한다.
그래서 DIP를 적용하여 수정시 다른 코드에 영향을 최소화 시킬수 있다.
protocol Networkable {
mutating func runDataTask<T: Decodable>(request: URLRequest, completionHandler: @escaping (Result<T,Error>) -> Void)
}
final class NetworkManager {
private var networkable: Networkable
init(networkable: Networkable = NetworkModule()) {
self.networkable = networkable // 의존성 주입
}
}
struct NetworkModule: Networkable {
// 실제 네트워크 통신 로직
}
struct NetworkTestModule: Networkable {
// 테스트 로직
}
NetworkManager의 networkable은 Networkable이라는 프토토콜에 의존하고 있다.
Networkable을 채택한 다른 타입으로 갈아 끼울수도 있어 테스트에 용이할수 있다고 볼수있다.
'OOP' 카테고리의 다른 글
SOLID - ISP (0) | 2022.03.27 |
---|---|
SOLID - OCP (0) | 2022.03.25 |
SOLID - SRP (0) | 2022.03.25 |
SOLID 원칙 (0) | 2022.03.25 |