MVC模式中業務抽離的方法

MVC模式中業務抽離的方法

導讀:MVC模式的應用中,現在存在的一個普遍的問題就是用戶圖形界面GUI和業務邏輯的強耦合,導致在一個Activity中出現大量的業務代碼,隨着產品的迭代,Activity顯得臃腫不堪,維護起來困難。本文將和大家分享如何將業務邏輯的代碼從Activity中抽離,達到MVC模式的真正效果。


一、爲什麼要進行業務抽離

假如我們的Activity A和B都對數據data感興趣,會根據數據data的改變進行GUI的修改,一般很多同學的做法就是在Activity中都寫一個線程或者用封裝的框架 AsyncTask,volley去獲取網絡數據d,對獲取到的數據進行解析,得到Activity A和B想要的數據data,然後根據data對Activity進行GUI的修改,設想一下這樣做的缺點有哪些。

第一:在Activity A和B中都需要寫一份同樣的獲取網絡數據的代碼和解析數據的代碼。

第二:假如要修改業務邏輯,需要找到所有的地方一一進行修改。

第三:V和C的耦合性太高。

有些同學可能會對獲取網絡數據和解析數據的方法進行一些二次封裝,然後在Activity中調用的時候只需要簡短的幾句代碼,這樣比起之前雖然高明瞭,但還不是真正的MVC模式的初衷。MVC模式想要做的是讓我們把用戶圖形界面GUI和業務邏輯進行分離,讓GUI不必關心業務邏輯的實現,只需要關心它想要的數據就可以了,想要做到這一點,就必須進行業務抽離。

二、如何進行業務抽離

業務抽離的核心就是讓GUI只去關心自己想要的數據,不必要關閉業務邏輯,所以我們首先要在V和C之間添加一個V關心的數據模型,我們知道業務層C就是一個數據的加工廠,它會將從網絡獲取到的數據加工成展示層V想要的數據模型,如此一來V和C的就進行了分離。

三、業務分離的關鍵點

業務分離之後,業務邏輯的代碼就不在Activity中了,那麼Activity中的控件如何知道自己感興趣的數據是否發生改變呢,這個是業務分離的關鍵點,如果能解決好這個問題,那麼業務分離也就成功了。也就是說當我們的業務層在接收到網絡數據後,要如何通知到V我們的數據data發生了變化。我們可以用觀察者模式來解決這個問題,不瞭解觀察者模式的同學可以挫這裏(通過Observer(觀察者模式)來看Android的MVC ),讓V作爲一個觀察者,實現ChangeListener接口,讓添加的數據模型MyMoudle作爲一個被觀察者,裏面持有觀察者的實例,當數據模型中的value產生變化的時候就通知V改變對應的GUI,根據策略來showLine或者showCircle。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章