一、MVVM的定義

8370_140716093537_1.png
M:模型,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)
V:View和ViewController
VC:viewModel,專門負(fù)責(zé)數(shù)據(jù)請(qǐng)求、業(yè)務(wù)邏輯等業(yè)務(wù)。
二、MVVMDemo
項(xiàng)目地址:https://github.com/coderyi/MVVMDemo

687474703a2f2f3775326b35692e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f6769746875625f6d76766d64656d6f312e706e673f696d6167654d6f6772322f7468756d626e61696c2f21353070.png
Model: 數(shù)據(jù)的模型
View: 其實(shí)包括View和ViewController兩部分,統(tǒng)稱為View
ViewModel: 本Demo,主要是處理網(wǎng)絡(luò)請(qǐng)求,把獲取的數(shù)據(jù)顯示在TableView上
另外
TableViewProtocol: 為了避免ViewController太重,我把TableView的DataSource和Delegate分離出來
MVVMDemo的效果預(yù)覽

687474703a2f2f3775326b35692e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f6769746875625f6d76766d64656d6f5f61707066696c652e706e673f696d6167654d6f6772322f7468756d626e61696c2f21343070.png
三、iOS架構(gòu)
結(jié)構(gòu)設(shè)計(jì)的層次是否越多越好?
多人都會(huì)說,凡事不能走極端,走了極端就過猶不及。所以應(yīng)該分層,但不能過分分層,應(yīng)該視具體情況來定。這樣的話聽起來很有道理,卻只是一句廢話。當(dāng)我們遇到問題時(shí),還是摸不著頭腦!
看看知名的架構(gòu)師是怎么說的吧!來自蔡學(xué)鏞
我做(開發(fā))架構(gòu)的幾個(gè)原則,根據(jù)優(yōu)先次序高低排列:
1. (邏輯)拆分越細(xì)越好
2. 依賴關(guān)細(xì)越少越好
3. 交互越少越好
相互矛盾時(shí),如果沒有特殊理由,以優(yōu)先權(quán)高者勝出。
由此啟發(fā),我覺得設(shè)計(jì)架構(gòu)應(yīng)該拆的越細(xì)越好。這樣做有如下幾點(diǎn)好處:
對(duì)于大中型軟件,層次越多,每一層就更單純,更容易維護(hù)。
團(tuán)隊(duì)成員只需了解一小部分業(yè)務(wù),就能順利進(jìn)行開發(fā)。
相對(duì)底層的模塊,可以更好的重用。
層次分的越多,開發(fā)者對(duì)抽象的理解就更深入。