
내부의 Circle에서는 외부의 Circle에 대해서 몰라야 합니다.
의존성은 외부 → 내부 의 흐름으로 진행되어야 합니다.
Ex) MVVM 패턴 기준
MVC에서 View Controller가 너무 많은 일을 하게 되어 Massive View Controller가 되듯이
MVVM에서도 View Model이 너무 많은 일을 하게 되어 Massive View Model이 될 수 있기 때문에
Clean Architecture를 적용합니다.
→ 확장성, 유지보수성, Testable 한 코드를 작성할 수 있게 됩니다.
https://youtu.be/--qKOhdgJAs?si=GXWAZdaZDuTMcucF
무엇을 수행 하는지 설명하는 모든 Data + Logic어떻게 보이는지를 담당ViewModel - View는 데이터 바인딩을 하는 방법
class Observable<T> {
var closure: ((T) -> Void)?
var value: T {
didSet {
closure?(value)
}
}
init(_ value: T) {
self.value = value
}
// bind에 작성한 구문이 바로 동작하게끔 하고 싶은 경우
// bind 바로 작동 O
func bind(closure: @escaping (T) -> Void) {
//closure(value)이 없는 경우 초기값을 바인딩하지 않음.
closure(value) // init
self.closure = closure
}
// bind가 바로 작동 X
func lazyBind(closure: @escaping (T) -> Void) {
self.closure = closure
}
}