常用項目架構(gòu)模式有MVC彩掐、MVP构舟、MVVM等。
一堵幽、MVC
蘋果傳統(tǒng)使用框架旁壮,簡單易理解和使用,不過弊端是隨著項目業(yè)務(wù)不斷增加會導(dǎo)致控制器C變得臃腫難以維護谐檀。
二抡谐、MVP
在傳統(tǒng)MVC架構(gòu)基礎(chǔ)上把ViewController也當(dāng)做View,并將ViewController里面的業(yè)務(wù)邏輯網(wǎng)絡(luò)請求等功能遷移到presenter層上去桐猬,通過泛型模式將p層和view層解耦麦撵,這樣相同邏輯就可以綁定不同的視圖view,方便業(yè)務(wù)的擴展和功能的復(fù)用。不過因為是單向數(shù)據(jù)綁定免胃,所以在有model數(shù)據(jù)更新的時候音五,需要手動更新視圖,這里可以借助觀察者模式進行綁定更新操作羔沙,達到自動更新目的躺涝。
三、MVVM
MVVM其實和MVP目的是一樣也是為了緩解C端的代碼的壓力扼雏,新增的VM其實和MVP中的P類似坚嗜,不過MVVM這里VM和View ,VM和Model數(shù)據(jù)層是雙向綁定的诗充,其實利用kvo和notification也能做到這點苍蔬,不過寫起來不那么優(yōu)雅,畢竟優(yōu)雅的是使用函數(shù)響應(yīng)式編程框架ReactiveCocoa可以更好的優(yōu)雅實現(xiàn)蝴蜓,有一定的學(xué)習(xí)成本碟绑。
總結(jié):
項目架構(gòu)萬變不離其宗,單一職責(zé)茎匠,開放關(guān)閉原則格仲,里氏替換原則,依賴倒置原則诵冒,迪米特法則(最少知道原則)凯肋,接口分離原則 六大原則,還有其他的一些比如swift上主要使用面向接口編程造烁,還有就是要優(yōu)先使用組合而非繼承等否过。所以在使用架構(gòu)上的使用其實也是要看具體項目的規(guī)模復(fù)雜度等午笛,適合的才是最好的惭蟋。