MVC和MVVC的理解?
一個(gè)典型的MVC設(shè)置。Model呈現(xiàn)數(shù)據(jù),View呈現(xiàn)用戶界面,而View Controller調(diào)節(jié)它兩者之間的交互,雖然View和View Controller是技術(shù)上不同的組件,但它們幾乎總是手牽手在一起,成對的。在典型的MVC應(yīng)用里,許多邏輯被放在View Controller里,使得視圖控制器越來越沉重,它們中的一些確實(shí)屬于View Controller,但更多的是所謂的“表示邏輯(presentation logic)”,以MVVM屬術(shù)語來說,就是那些將Model數(shù)據(jù)轉(zhuǎn)換為View可以呈現(xiàn)的東西的事情,例如將一個(gè)NSDate轉(zhuǎn)換為一個(gè)格式化過的NSString。MVVM:一個(gè)MVC的增強(qiáng)版,我們正式連接了視圖和控制器,并將表示邏輯從Controller移出放到一個(gè)新的對象里,即View Model。MVVM聽起來很復(fù)雜,但它本質(zhì)上就是一個(gè)精心優(yōu)化的MVC架構(gòu),而MVC你早已熟悉。在iOS上使用MVVM的動機(jī),對我來說,無論如何,就是它能減少View Controller的復(fù)雜性并使得表示邏輯更易于測試。本質(zhì)上就是將viewDidLoad中的表示邏輯放入我們的View Model里了。此時(shí),我們新的viewDidLoad就會非常輕量,帶來更輕量的View Controllers。
各架構(gòu)有什么特點(diǎn)?
MVCS拆胖Controller,MVVM拆胖Model,VIPER什么都拆
設(shè)計(jì)APP架構(gòu)時(shí)都需要考慮什么問題?
(根據(jù)要解決的問題<用戶登陸退出+不同用戶數(shù)據(jù)交流+用戶數(shù)據(jù)存儲+>——>確定需要的模塊<連接池實(shí)現(xiàn)的鏈接管理模塊+數(shù)據(jù)交換模塊+帶有緩沖區(qū)的數(shù)據(jù)庫+>——>細(xì)化模塊越小越獨(dú)立越好——>分層整理生成架構(gòu)圖)
架構(gòu)本質(zhì)?
1、各模塊高度獨(dú)立!
2、拒絕耦合,讓各個(gè)類之間的互相調(diào)用(桌子與抽屜分不開,床單與床墊分不開),不同模塊之間相互關(guān)系的程度越小越好!
對于一個(gè)app的網(wǎng)絡(luò)層,你在設(shè)計(jì)時(shí),你會考慮哪些問題?
對于一個(gè)app的持久層,如果讓你直接用sqlite,你如何設(shè)計(jì)版本遷移方案?
如何創(chuàng)建私有Pod?
工作中你會采用哪些手段降低代碼耦合度?又會采取哪些方法解耦?(接口參數(shù)越少越好、單元測試)