본문 바로가기

Design Patterns4

MVVM 아키텍쳐 적용하기 MVVM 아키텍쳐 적용하기 어렵지 않아요~ 1. class ViewModel 만들기 2. VC에 ViewModel 객체 만들기 3. VC에서 UI와 관련된 비지니스로직을 ViewModel로 옮긴다. 4. VC의 UI 처리 부분을 input과 output으로 나눈다. 5. input을 받으면 ViewModel로 넘겨주도록 observer를 선언해 놓는다. 6. ViewModel에서는 input에서 넘겨 받을 함수나 변수를 준비한다. 7. ViewModel에서 계산된 결과를 넘겨주면 받을 수 있도록 observer를 만든다. 8. 계산된 결과를 넘겨줄 Observable을 만든다. ViewModel을 적용하고 나면 별거 없다는 것을 알게될 겁니다. 9. ViewModel의 계산된 결과를 VC에서 기다리고 있.. 2020. 6. 17.
SwiftHub Login ViewController / ViewModel 분석 LoginViewController bindViewModel() override func bindViewModel() { super.bindViewModel() guard let viewModel = viewModel as? LoginViewModel else { return } let segmentSelected = Observable.of(segmentedControl.segmentSelection.map { LoginSegments(rawValue: $0)! }).merge() let input = LoginViewModel.Input(segmentSelection: segmentSelected.asDriverOnErrorJustComplete(), basicLoginTrigger: basicLog.. 2020. 6. 17.
Swift: How to Migrate MVC to MVVM Swift: How to Migrate MVC to MVVM & Intro Unit Testing 1. 기능이름ViewModel.swift 생성 class 기능이름ViewModel or struct 기능이름ViewModel 만들기 class/struct 안에 필요한 변수와 생성자 만들기 (의존성 주입) 의존성 주입 struct CourseViewModel { let name: String // Dependency Injection (DI) init(course: Course) { self.name = course.name } } 2. VC에 있는 Model 객체(e.g. fetchArray)를 ViewModel 객체로 변경 class CoursesController: UITableViewControlle.. 2020. 6. 17.
Dependency Injection(DI: 의존성 주입) [DI] Dependency Injection 이란? - Clint Jang - Medium Dependency Injection 높은 재사용성 테스트 용이 코드 단순화 종속적인 코드 줄여줌 코드 의도 파악 수월. 종속성 감소 구성 요소의 종속성이 감소하면 변경에 민감하지 않습니다 결합도(coupling)는 낮추면서 유연성과 확장성은 향상 객체 간의 의존관계 설정 객체 간의 의존관계를 없애거나 줄임 의존성 class AClass { var number: Int = 1 } // AClass와 의존관계가 있는 클래스 class BClass { // 내부에 변수로 AClass를 사용 var internalVariable = AClass() } let b = BClass() print(b.internalVari.. 2020. 1. 26.