美文网首页
VIPER架构(结合项目总结)

VIPER架构(结合项目总结)

作者: 萤火虫离别的礼物 | 来源:发表于2019-07-01 10:42 被阅读0次

    分五大部分:

    • View:主要写界面上的UI实现(控制器)

    • Presenter:英文翻译是主持者,主要放业务逻辑,例如点击事件的逻辑,分担控制器的负担,放一些方法的实现,供控制器来调用。(一般NSObject类型)

     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,防止循环引用)

    • Wireframe:相当于Router,处理界面之间跳转的逻辑
    1. View 和 Presenter以及 Interactor 的初始化也在该类中,提供接口,供其他模块调用和跳转界面。
    2. 作为 Presenter 的一个属性被传入 Presenter ,Presenter 可以调用 Wireframe 中界面跳转的方法跳到其他的界面。
    3. Wireframe 和 Presenter 之前的通信也是通过协议,同上,但是一般 Presenter 调用 Wireframe 中的方法,不需要双向调用。
    4. 为了实现 Presenter 调用其他模块的方法,将其他模块的Wireframe作为对象传进来并传给Presenter,调用它的协议方法来实现。
    • Interactor:处理主要的业务逻辑,主要是和 Presenter 进行交互,Presenter调用 Interactor 的方法请求数据,请求结果调用 Presenter 的方法返回给View进行显示。除此之外,Interactor 也处理其他的逻辑,视情况而定。
    • Entities:相当于model,枚举、结构体等类型。

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

    相关文章

      网友评论

          本文标题:VIPER架构(结合项目总结)

          本文链接:https://www.haomeiwen.com/subject/jwgecctx.html