Controller其實(shí)是業(yè)務(wù)層捻艳,業(yè)務(wù)層內(nèi)有數(shù)據(jù)展示和業(yè)務(wù)邏輯
網(wǎng)絡(luò)層和持久層你統(tǒng)一為數(shù)據(jù)層沒有問題。但是建議不要這么做,因?yàn)槌志脤映藬?shù)據(jù)存儲厂画,還會有一個弱業(yè)務(wù)Mananger,是DataCenter拷邢。網(wǎng)絡(luò)層除了API調(diào)用袱院,也會有一個弱業(yè)務(wù)Manager,也就是APIMananger瞭稼。建議把持久層和網(wǎng)絡(luò)層這兩者分開忽洛,并列存在就行了。
之所以Controller必須使用Manager(APIManager或DataCenter)去訪問對應(yīng)數(shù)據(jù)环肘,主要是為了強(qiáng)弱業(yè)務(wù)隔離欲虚,而且網(wǎng)絡(luò)層和持久層只提供了這個操作入口給Controller,并沒有提供其他亂七八糟的入口悔雹,這也是為了提高代碼的可維護(hù)性复哆。所以Controller只能使用Manager去操作時這個原因,跟跨層訪問無關(guān)荠商。
Manager這個封裝很有用寂恬,Manager做的事情不止是單單的調(diào)用。網(wǎng)絡(luò)層APIManager提供了參數(shù)生命周期管理莱没,AOP攔截器初肉,回調(diào)預(yù)處理,API調(diào)用信息管理饰躲,緩存管理牙咏,reformer機(jī)制的實(shí)現(xiàn)等等一系列功能臼隔,這一系列事情都不是應(yīng)該丟到Controller去做的
由于iOS場景下妄壶,Controller其實(shí)是業(yè)務(wù)層,業(yè)務(wù)層里面有數(shù)據(jù)展示和業(yè)務(wù)邏輯丁寄,所以數(shù)據(jù)展示不能成為單獨(dú)的一個層,因?yàn)樾枰獦I(yè)務(wù)層去調(diào)度伊磺,也就是Controller去調(diào)度盛正。