VIPER架构(结合项目总结)

2019-07-01  本文已影响0人  萤火虫离别的礼物

分五大部分:

 View 和 Presenter 之间的通信可以通过专门定义协议的类来实现。
 例如:

// Presenter 调用 View 的方法,View遵守该协议,方法实现写在 View 中
protocol exampleInput: class {
    func setupEmptyState()
    func setRefreshButtonHidden(_ hidden: Bool)
}

// View 调用 Presenter 的方法,Presenter遵守该协议,方法实现写在 Presenter 中
protocol exampleOutput {
    func handleViewWillAppear()
    func handleToggleAddToCalendar()
}

 在 Presenter 中创建一个View类型的属性,在View中创建一个Presenter 类型的属性,在初始化完各自赋值,就可以在各自类中调用了。(注意:其中一个需要用weak,防止循环引用)

  1. View 和 Presenter以及 Interactor 的初始化也在该类中,提供接口,供其他模块调用和跳转界面。
  2. 作为 Presenter 的一个属性被传入 Presenter ,Presenter 可以调用 Wireframe 中界面跳转的方法跳到其他的界面。
  3. Wireframe 和 Presenter 之前的通信也是通过协议,同上,但是一般 Presenter 调用 Wireframe 中的方法,不需要双向调用。
  4. 为了实现 Presenter 调用其他模块的方法,将其他模块的Wireframe作为对象传进来并传给Presenter,调用它的协议方法来实现。

总结:VIPER(View Interactor Presenter Entities Router(Wireframe))将MVC中Controller中的逻辑拆分成Presenter、Interactor、Router,在中业务逻辑越来越多的时候不至于让控制器难以维护。VIPER的Presenter的主要工作是在View和Interactor之间传递事件,并管理一些View的展示逻辑,主要的业务逻辑实现代码都放在了Interactor里。

上一篇下一篇

猜你喜欢

热点阅读