999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MVP設計模式研究及在Android中的設計

2017-04-20 22:44:48楊靖洪蕾
科技創新導報 2016年34期
關鍵詞:模型

楊靖++洪蕾

摘 要:MVP即Model-View-Presenter,是一種界面設計模式。使用MVP設計模式可以幫助我們分離業務邏輯,顯示邏輯和用戶界面,讓我們的程序具有良好的可擴展性、可測試性,保證了系統的整潔性、靈活性。

關鍵詞:MVP Android 設計模式 UI 控制器 模型 視圖

中圖分類號:F270.7 文獻標識碼:A 文章編號:1674-098X(2016)12(a)-0097-02

在Android上,業務邏輯和數據存取是緊耦合的,很多缺乏經驗的工程師可能會將各種各樣的業務邏輯塞進某些組件或者自定義View中,使得這些組件的單個類臃腫不堪,這對程序的更新迭代造成很大的影響,而好的設計模式可以使得各個模塊之間相互分離,解決系統的耦合度,提高程序的擴展性。

1 MVP概述

MVP是根據MVC延伸出來的一種使用者界面設計模式,是20世紀90年代,IBM旗下的子公司Taligent在用C/C++開發一個叫CommonPoint的圖形界面應用系統的時候提出來的。MVP能夠有效降低View的復雜性,避免業務邏輯被塞進View中。MVP模式比之MVC模式而言解除了View與Model之間的耦合,同時又帶來了良好的可擴展性、可測試性。

MVP模式可以分離顯示層和邏輯層,它們之間通過接口進行通信,降低耦合。理想化的MVP模式可以實現同一份邏輯代碼搭配不同的顯示界面,其中的面向接口編程使得程序更加具有開放性以及適用性,保證了靈活性。

2 MVP模式剖析

2.1 MVP模式結構

MVP模式中,用戶與View交互,View與Presenter通過接口進行通信,Presenter與Model通過接口進行交互,Model功能不光提供數據模型,還有數據的存儲與獲取業務包含在內,整體設計而言解除了View與Model之間的耦合。

MVP模式可以讓UI界面和數據分離,我們的應用至少可以分為3層,這樣可以使得我們對這3層進行獨立的單元測試。

MVP并不是一個標準化的模式,用戶可以根據自己的需求和理解去實現自己的MVP模式設計。

2.2 View模塊分析

視圖(View)用于顯示UI界面及與用戶交互使用,通常使用Android中的Activity、Fragment或者自定義View作為View層。

在此建議使用Fragment作為View層,因為Fragment自身的特殊性,Fragment自身可作為View來使用,使得程序有更好的擴展性和靈活性。

因為MVP自身的獨特性,View和Presenter之間直接存在著關聯,所以可以使用接口來規定二者的通信。

而View自身需要和Presenter進行通信,所以一般View持有一個Presenter成員變量。通常View需要實現一個邏輯接口,將View上的操作通過回轉交給Presenter實現,最后Presenter調用View邏輯接口將返回結果給View元素。

理想狀態下,可以在同一套業務邏輯中完全替換新的View,因為Presenter和View之間都是使用各自的接口對象進行通信。

2.3 Presenter模塊分析

控制器(Presenter)也稱為交互中間人,作為溝通View和Model之間的橋梁,它從Model層檢索數據后,返回給View層,使得View和Model之間沒有耦合,也將業務邏輯從View角色上抽離出來。

所以一般情況下,Presenter具體實現類中需要持有View和Model接口對象來進行交互。

2.4 Model模塊分析

模型(Model)負責數據的獲取和存儲,主要角色是提供數據的存取功能。Presenter需要通過Model層存儲、獲取數據、請求遠程數據等,Model層是一個封裝了數據庫DAO層及網絡獲取數據的數據倉庫。

因為Model層自身的特殊性,負責數據的獲取,而有些特殊應用需要緩存數據到本地數據庫,所以從遠程服務器和本地存儲(如:數據庫或文件)都可能會存取到,可以在Presenter層中控制數據的來源。

3 MVP模式應用在Android中的實現

3.1 View與Presenter之間的關聯及實現

在MVP模式中,View和Presenter之間相互通信,因此可以定義出View和Presenter中的所有通信動作,可以使用接口來限定V和P層的動作,并且V層應該持有P層的對象,可以使用如下代碼:

public interface BaseView{

void setPresenter(T presenter);

void showLoading(String value);

void dismissLoading();

boolean isActive();

}

public interface BasePresenter{

void start();

void initData();

void bindDataToView();

}

public interface LoginContract{

interface Viewextends BaseView{

void setUsername(String userName);

void setPassword(String passWord);

}

interface Presenter extends BasePresenter{

void login(String userName,String pass Word);

}

}

可定義View和Presenter的基類中定義基礎的動作,并且規定View中必須實現邏輯接口,將View上的操作通過回轉交給Presenter實現,最后Presenter調用View邏輯接口將返回結果給View元素,Presenter層中可在具體類的構造方法中加入View參數,從而實現View和Presenter互相通信的目的。

在初始化Presenter后,Presenter類中必須調用View中實現的邏輯接口,將自身傳遞進去。

3.2 Android中Model層的設計

因為Model層的特殊性,Model可定義為數據倉庫,Model可以從遠程服務器或者本地保存的數據中讀取數據,可以把請求網絡接口的操作放在Model中,或者負責第三方SDK交互操作,這一層包含實際的Model類,用于定義當前數據結構。

Presenter層可以通過回調獲取Model層的數據,完成Presenter層和Model層間的通信。

4 結語

該文對MVP設計模式的概念及其在Android中的設計使用進行了介紹。可以看出,MVP模式非常容易使用,但需要指出的是,MVP并非一套固定的準則,用戶可以根據自己的需求和理解去撰寫自己的MVP模式。

MVP縱然有代碼耦合度降低、層級清晰等一系列優點,但是大量的View-Model,Model-View的手動同步會造成Presenter比較笨重,維護起來會比較困難,而且View和Presenter之間太過緊密,如果View變更,Presenter也需要變更,增加了代碼的復雜度。

最后,我們應該明白,所有的設計模式都只是對程序開發的指導,并不是準則,我們應該根據自己實際開發中的項目經驗和實際情況來選擇是否使用以及如何使用設計模式,從而編寫出更加優良的代碼。

參考文獻

[1] CameloeAnthony.安卓架構文章合集[EB/OL].http//www.jianshu.com.

[2] 何紅輝,關愛名.Android源碼設計模式解析與實戰[M].中國郵電出版社,2015.

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: a色毛片免费视频| 人妻无码中文字幕第一区| 午夜爽爽视频| 日本免费a视频| 91久久精品国产| 亚洲人在线| 国产swag在线观看| 精品国产自在现线看久久| 国产精品无码一区二区桃花视频| 亚洲国产精品美女| 国产91视频免费| 日韩欧美一区在线观看| 亚洲91在线精品| 色悠久久综合| 国产精品黄色片| 91在线播放免费不卡无毒| 香蕉综合在线视频91| 91色爱欧美精品www| 久久国产乱子伦视频无卡顿| 日韩欧美国产精品| 久久黄色毛片| 国产日韩欧美中文| 欧美a级完整在线观看| 亚洲AV无码不卡无码| 99人妻碰碰碰久久久久禁片| 亚洲无线观看| 国产免费羞羞视频| 久久精品电影| 国产毛片基地| 一区二区午夜| 久久综合婷婷| 国产超薄肉色丝袜网站| 亚洲男人天堂2020| 午夜电影在线观看国产1区| 国产微拍一区| 粗大猛烈进出高潮视频无码| 老司机精品99在线播放| 高清无码不卡视频| 亚洲va视频| 免费在线一区| 亚洲天堂免费在线视频| 岛国精品一区免费视频在线观看| 色精品视频| 国产情精品嫩草影院88av| 国产流白浆视频| 亚洲毛片网站| 亚洲成人高清在线观看| 国产精品亚洲天堂| 国产在线视频福利资源站| 999精品免费视频| a级毛片毛片免费观看久潮| 免费激情网站| 国产99免费视频| 欧美日韩国产在线人| 欧美亚洲第一页| 亚洲中文字幕无码爆乳| 国产成人精品亚洲77美色| 国产福利免费视频| 91无码网站| 91丝袜美腿高跟国产极品老师| 亚洲精品黄| 国产91无毒不卡在线观看| 国产欧美精品午夜在线播放| 精品综合久久久久久97超人该| 欧美第一页在线| 99在线观看视频免费| 久久a级片| 色偷偷一区二区三区| 91精品在线视频观看| 国产欧美视频综合二区| 国产精品原创不卡在线| 欧美亚洲一区二区三区在线| 男人天堂亚洲天堂| 97se亚洲综合| 无码日韩精品91超碰| 日本成人一区| 无码 在线 在线| 国模沟沟一区二区三区| 国产在线小视频| 毛片网站观看| 国产亚洲欧美日韩在线一区二区三区| 亚洲AV免费一区二区三区|