hcn1519 / TILMemo

블로그 초안 저장소
10 stars 1 forks source link

Modern MVP #49

Closed hcn1519 closed 4 years ago

hcn1519 commented 4 years ago

Modern MVP

1. Model

2. View

3. Presenter

Presenter 구현

class BooksPresenterImplementation: BooksPresenter {
    fileprivate weak var view: BooksView?
}
class BooksTableViewController: UITableViewController, BooksView {
    var presenter: BooksPresenter!
}
class BooksPresenterImplementation: BooksPresenter {
    var refreshTableView: (() -> Void)?
}

class BooksTableViewController: UITableViewController, BooksView {
    var presenter: BooksPresenter!

    func viewDidLoad() {
        super.viewDidLoad()
        presenter.refreshTableView = { [weak self] in
            self?.tableView.reloadData()
        }
    }
}

4. 추가 Component - Router

MVP의 장점

  1. MVC 패턴에서 크게 벗어나지 않으면서 ViewController에 집중되는 역할을 분산할 수 있다.
    • Model, View의 역할이 기존 MVC의 Model, View와 거의 동일하다.
  2. Router를 통해서 네비게이션 전환도 ViewController에서 제거할 수 있다.

참고 자료