前言
部門最近引進(jìn)一個(gè)新物種,一種高可用松耦合的iOS框架舍扰,用于路由view倦蚪,uiviewcontroller,service的路由器边苹,梳理一下整體思路來看就是兩個(gè)字陵且,折騰。折騰小的view个束,小組建慕购,小的service,好處后面說茬底,缺點(diǎn)是代碼多沪悲,理解困難,有點(diǎn)小題大作多意思阱表。
優(yōu)點(diǎn)是重視細(xì)節(jié)殿如,重視劃分職責(zé)贡珊,組件化有利于團(tuán)隊(duì)開發(fā),協(xié)議聲明有利于跨部門開發(fā)涉馁。
實(shí)現(xiàn)
實(shí)現(xiàn)上门岔,是用于服務(wù)發(fā)現(xiàn),注冊(cè)聲明烤送,統(tǒng)一調(diào)用的方式寒随。由于是協(xié)議聲明,所以不用關(guān)心內(nèi)部的實(shí)現(xiàn)帮坚,那有人說頭文件也可以啊妻往,其實(shí)限制是頭文件可能會(huì)改名字改類別,帶來使用者迷惑叶沛,不如跟api一樣暴露一些方法聲明即可蒲讯,內(nèi)部這幾個(gè)方法固定其他的隨意編寫。使用上面是根據(jù)要調(diào)用的方式傳參灰署,比如push判帮,present,addsubview溉箕,remove晦墙,pop,dismiss肴茄,而且會(huì)在各個(gè)生命周期調(diào)用階段會(huì)有回調(diào)晌畅。
架構(gòu)圖
VIPER 的主要部分是:
視圖:根據(jù)展示器的要求顯示界面,并將用戶輸入反饋給展示器寡痰。
交互器:包含由用例指定的業(yè)務(wù)邏輯抗楔。
展示器:包含為顯示(從交互器接受的內(nèi)容)做的準(zhǔn)備工作的相關(guān)視圖邏輯,并對(duì)用戶輸入進(jìn)行反饋(從交互器獲取新數(shù)據(jù))拦坠。
實(shí)體:包含交互器要使用的基本模型對(duì)象连躏。
路由:包含用來描述屏幕顯示和顯示順序的導(dǎo)航邏輯。
數(shù)據(jù)流向圖
開發(fā)階段注意
模塊劃分問題贞滨,不同模塊之間的劃分應(yīng)該盡量簡(jiǎn)單
交互層入热,只放界面邏輯
實(shí)體數(shù)據(jù)層,只放界面或元素實(shí)體
解決代碼復(fù)雜的問題晓铆,創(chuàng)建模板勺良,把常用的規(guī)則的寫法放到模板上面去
后記
這種架構(gòu)其實(shí)是viper是MVVM的升級(jí)版本,用于解決單元測(cè)試單一職責(zé)問題
https://github.com/Zuikyo/ZIKRouter
使用 VIPER 構(gòu)建 iOS 應(yīng)用
viper模板