java mvc mvp_MVC和MVP设计模式
參考博客
http://www.cnblogs.com/end/archive/2011/06/02/2068512.html
####MVC模式
M:model 模型
V:view視圖
C:controller控制器
>我們知道,所有的軟件的構(gòu)成主要有兩部分,分別是用戶交互入口(USER INTERFACE)和數(shù)據(jù)(DATA)。那么為什么UI(USER INTERFACE)稱為用戶交互入口呢?因為我們的用戶,在使用我們的軟件的時候,他們關(guān)心的并不是使用了什么技術(shù)實現(xiàn)的,考慮更多的是這個功能好不好用,這個交互舒服不舒服。那么用戶在通過視覺和通過操作使用我們軟件的時候,接觸用戶的就是我們的界面,承載交互的就是我們界面上的控件。所以,UI稱之為用戶交互入口,因為有了視覺體驗有了感知,才會有行為,有了行為才能稱之為交互。用戶的行為,也就是交互,我們就是C(CONTROLLER)在處理,那么呈現(xiàn)在UI(USER INTERFACE)上面的內(nèi)容,就是我們的數(shù)據(jù),所以我們的M(MODEL)就是MVC中的數(shù)據(jù)模型。
在我們的android開發(fā)過程中,本質(zhì)上并沒有完全遵循MVC架構(gòu)模式。以Activity為例:
它可以是V也可以使C。因為Activity能兼容了View和Controller的基本特征。那么,在Android中,MVC在哪些場景下體現(xiàn)的比較準確呢?以列表級控件的使用為例(ListView,GridView):我們需要聲明ListView這個外層容器,然后定義Item的UI樣式,然后通過適配器將UI和數(shù)據(jù)進行匹配,最后將適配器和控件進行綁定。那么這個就是我們MVC軟件架構(gòu)模型的一個很清晰的體現(xiàn),在列表級控件中,我們使用了Adapter,在設計模式中,稱之為適配器模式。所以在這個小例子中,就要體會一下軟件架構(gòu)模型和設計模式的區(qū)別。

####MVP模式
M:model 模型
V:view 視圖
P:presenter 中間人
>MVP作為MVC的演化進階模型。它的靈活性以及優(yōu)勢主要體現(xiàn)在復雜的業(yè)務場景下。首先MVP中的M(MODEL)可以承載交互扮演MVC中C(CONTROLLER)的角色,也可以扮演MVC中M(MODEL)的角色,可以進行數(shù)據(jù)建模也可以進行視圖建模。MVP中V(VIEW)屬于單純意義上的視圖層。P(PRESENTER)則作為中間人亦或者橋梁,將M和V進行關(guān)聯(lián)。同時MVP中的P(PRESENTER)也可以作為業(yè)務實現(xiàn)層體現(xiàn)在項目中。

>所以,綜上,MVP相比較MVC我們發(fā)現(xiàn),它的靈活性更高了,并且,拆解效率非常明顯。總結(jié)一句話就是,MVP在復雜業(yè)務背景下,解耦和擴展效果突出。
MVP 的缺點:model 層與 Presenter 層,presenter層與 view 層之間通過接口建立聯(lián)系,這樣會導致當頁面邏輯很復雜的時候,View 層實現(xiàn)的接口會很多,如果你的App中有很多復雜的頁面,維護接口的成本會變的很大。
#### MVVM 模式
MVVM 模式將 Presenter 改名為 ViewModel,基本與MVP模式一致
區(qū)別在于 View 層與 ViewModel 層通過 DataBinding相互綁定。View層的變動,自動反應在 ViewModel 層,反之亦然
### Dagger2在MVP中所發(fā)揮的作用
Dagger2是為Android和Java平臺提供的編譯時進行依賴注入的框架,編譯時生成代碼,完成所需對象的注入,解決了基于反射帶來的開發(fā)和性能上的問題。主要是用于界面和業(yè)務之間的隔離
使用步驟:
>0.添加依賴
>0.借助工具生成編譯注解器(在gradle中進行配置),在編譯時起作用
>1.指定要注入的目標(@inject)
>2.創(chuàng)建dagger文件,創(chuàng)建module類(@module,@presenter)
>3.通過接口建立Activity和Module之間的關(guān)系(@component)
>4.rebuild 編譯生成代碼
>5.使用那個類


>“可參考的博客:http://blog.csdn.net/tiankong1206/article/details/46486401”
### Retrofit
利用注解和okHttp實現(xiàn)和服務器的數(shù)據(jù)交互
用法
0.添加依賴并進行配置
1.創(chuàng)建model數(shù)據(jù)模型
2.定義REST API接口
3.創(chuàng)建Retrofit對象并發(fā)起請求
### RxJava
本質(zhì)是一個在java VM 上使用可觀測序列的基于事件程序的異步操作庫,使用簡潔的邏輯處理復雜的任務的一個異步操作庫。
可以輕松處理不同環(huán)境下的后臺線程和UI線程庫
關(guān)鍵字:簡潔,異步,隊列化

總結(jié)
以上是生活随笔為你收集整理的java mvc mvp_MVC和MVP设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux promisc 作用,lin
- 下一篇: 关于计算机软件技术基础知识,计算机软件技