Viper架構初探(一):架構實踐與職責架勢

Viper架構實踐

基于Viperit寫了一個簡單的新聞的demo
XCViperitDemo

Xnip2019-10-17_15-08-55.jpg

Viper架構圖

image
1865432-580872920986b640.png

VIPER的主要部分

簡介

  • View: (視圖): 顯示Presenter告知的內容,并將用戶輸入中繼回Presenter。
  • Interactor: (交互器):包含用例指定的業(yè)務邏輯。
  • Presenter: (表示層,也可稱主持人):包含用于準備顯示內容(如從Interactor接收的)和用于對用戶輸入做出反應(通過從Interactor請求新數(shù)據(jù))的視圖邏輯。
  • Entity: (實體):包含Interactor使用的基本模型對象。
  • Routing: (路由):包含用于描述按哪個順序顯示哪些屏幕的導航邏輯。

這種分離也符合單一責任原則。
Interactor負責業(yè)務分析師
Presenter代表交互設計師
View負責視覺設計師

相比MVX

相比之前的MVX架構,VIPER多出了兩個東西:Interactor(交互器)和Router(路由)。

各部分職責如下:

- View
提供完整的視圖,負責視圖的組合、布局、更新
向Presenter提供更新視圖的接口
將View相關的事件發(fā)送給Presenter

- Presenter
接收并處理來自View的事件
向Interactor請求調用業(yè)務邏輯
向Interactor提供View中的數(shù)據(jù)
接收并處理來自Interactor的數(shù)據(jù)回調事件
通知View進行更新操作
通過Router跳轉到其他View

- Router
提供View之間的跳轉功能,減少了模塊間的耦合
初始化VIPER的各個模塊

- Interactor
維護主要的業(yè)務邏輯功能,向Presenter提供現(xiàn)有的業(yè)務用例
維護、獲取、更新Entity
當有業(yè)務相關的事件發(fā)生時,處理事件,并通知Presenter

- Entity
和Model一樣的數(shù)據(jù)模型

Viper模版代碼生成工具

推薦兩個模版

Viperit

  • 支持Swift、SwiftUI
  • 可創(chuàng)建viper架構模版

Generamba

  • 支持OC和Swift
  • 可以創(chuàng)建mvvm、viper模版

了解模版語言Liquid

github源碼:liquid
Liquid 模板語言中文文檔

Liquid 是一門開源的模板語言,由 Shopify 創(chuàng)造并用 Ruby 實現(xiàn)。它是 Shopify 主題的骨骼,并且被用于加載店鋪系統(tǒng)的動態(tài)內容。

從 2006 年起,Liquid 就被 Shopify 所使用,現(xiàn)在更是被大量 web 應用所使用

參考:

  1. viper原作者 By Jeff Gilbert and Conrad Stoll
    Architecting iOS Apps with VIPER
  2. iOS VIPER架構實踐(二):VIPER詳解與實現(xiàn)
  3. iOS架構模式-VIPER
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容