將應用程式分成3個部分view、model、controller,mvc是一種框架模式而非設計模式,可以看成三種設計模式,觀察者模式、組合模式、策略模式,controller層一般有activity層承擔,view由xml層承擔,model層大多對應本地的資料檔案或網路獲取的資料體
view只與prsenter打交道,model也只與presenter打交道,這樣view就與model解耦,使**變得更靈活
public class articlepresenter
public fetch()
public void loadarticlesfromdb()
public inte***ce articleviewinte***ce
...}
public class articlemodelimpl implements articlemodel
然後在oncreate中繫結presenter,而在mvp模式中activity相當於是乙個view物件,然後model物件依賴於inte***ce這個抽象,使它可以輕易被替換
mvp缺點是容易當網路請求沒有返回時,導致presenter一直持有articleactivity物件無法被**,此時就發生了記憶體洩漏
解決方法:採用弱引用以及activity、fragment的宣告週期,通過繼承activity、fragment的ondestroy會被呼叫,當不呼叫時,弱引用也會保證不會造成記憶體洩漏
弱引用**
public abstractclass basepresenter
protected getview()
public boolean isviewattached()
public void detachview()
}
這個都是借鑑人民郵電出版社的android原始碼設計模式解析與實戰的,正如前言所說這本書難度不是很高也不是很低,裡面也介紹了眾多android原始碼中精細的一部分,層層剖析十分到位,我也初步了解了記憶體管理以及**的抽象程式設計,以及23種設計模式的初步了解,希望這份總結能幫到未來的我和你們 MVC模式和MVP模式的區別
mvc model view controller 是軟體工程中的一種軟體架構模式,它把軟體系統分為模型 檢視和控制器三個基本部分。用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。mvp 全稱 model ...
MVC模式和MVP模式的區別
mvc模式和mvp模式的區別 mvc模式 1.mvc的所有通訊都是單向的。2.view傳送指令到controller 使用者也可以直接將指令傳到controller 3.controller完成業務邏輯後要求model改變狀態。4.model將新的資料傳送到view,使用者得到反饋。mvp模式 mv...
WinForm中的MVC模式 MVP模式
using system using system.collections.generic using system.linq using system.text using system.componentmodel namespace set private string name public...