Controller其實是業(yè)務(wù)層,業(yè)務(wù)層內(nèi)有數(shù)據(jù)展示和業(yè)務(wù)邏輯
網(wǎng)絡(luò)層和持久層你統(tǒng)一為數(shù)據(jù)層沒有問題。但是建議不要這么做,因為持久層除了數(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ù),主要是為了強弱業(yè)務(wù)隔離,而且網(wǎng)絡(luò)層和持久層只提供了這個操作入口給Controller,并沒有提供其他亂七八糟的入口,這也是為了提高代碼的可維護性。所以Controller只能使用Manager去操作時這個原因,跟跨層訪問無關(guān)。
Manager這個封裝很有用,Manager做的事情不止是單單的調(diào)用。網(wǎng)絡(luò)層APIManager提供了參數(shù)生命周期管理,AOP攔截器,回調(diào)預(yù)處理,API調(diào)用信息管理,緩存管理,reformer機制的實現(xiàn)等等一系列功能,這一系列事情都不是應(yīng)該丟到Controller去做的
由于iOS場景下,Controller其實是業(yè)務(wù)層,業(yè)務(wù)層里面有數(shù)據(jù)展示和業(yè)務(wù)邏輯,所以數(shù)據(jù)展示不能成為單獨的一個層,因為需要業(yè)務(wù)層去調(diào)度,也就是Controller去調(diào)度。