MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)
傳了一張圖,圖比較大,請移步下載:http://download.csdn.net/detail/u011064099/9266245
在看代碼之前,首先簡單看一下什么是MVP模式:http://www.cnblogs.com/end/archive/2011/06/02/2068512.html
MVP最核心就是將界面與數(shù)據(jù)徹底分離,并且由其中的P來進(jìn)行邏輯處理,與界面與數(shù)據(jù)之間的調(diào)用,在這個(gè)例子當(dāng)中很好的對他們進(jìn)行了分離:
IView只是用來控制界面的顯示與事件的監(jiān)聽
Presenter則用作于數(shù)據(jù)與界面之間的調(diào)用與邏輯處理
AbstData為數(shù)據(jù)的統(tǒng)一接口
這三個(gè)類都繼承IConnect,以方便它們之間進(jìn)行通訊。
具體的實(shí)現(xiàn)都是由Presenter的子類來進(jìn)行操作的,比如ShowNetPresenter它組裝了具體的細(xì)節(jié),供IView的實(shí)現(xiàn)類ActivityA來進(jìn)行使用。
我們可以在Activity中寫入一個(gè)靜態(tài)方法,以便傳入我們要具體使用的Presenter的實(shí)現(xiàn)類:
/*** 我們的入口** @param context* @param c Presenter具體的實(shí)現(xiàn)類*/public static void startInstance(Context context, Class c) {Intent intent = new Intent(context, MVPActivity.class);intent.putExtra(KEY, c);context.startActivity(intent);}就像這樣: MVPActivity.startInstance(context, PresenterImpl.class);在它的內(nèi)部,對傳入的類進(jìn)行實(shí)例化: Class<?> c = (Class<?>) getIntent().getSerializableExtra(KEY); Constructor<?> constructor = c.getConstructor(IView.class); Object o = constructor.newInstance(this); if (o instanceof Presenter)mPresenter = (Presenter) o;于是,IView的實(shí)現(xiàn)類便于Presenter的實(shí)現(xiàn)類產(chǎn)生了交互,它們之間便可進(jìn)行通訊。
更多詳情請參見項(xiàng)目源碼:
項(xiàng)目地址:?http://git.oschina.net/sahadev/MVP-for-android-
在該項(xiàng)目中,因?yàn)橛行﹤}促,所以某些設(shè)計(jì)可能沒有完全遵從設(shè)計(jì)原則,請?jiān)谑褂玫臅r(shí)候適當(dāng)修改。
總結(jié)
以上是生活随笔為你收集整理的MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每日优鲜小程序基础组件介绍
- 下一篇: 简明扼要的反射入门教程