日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java mvc mvp_MVC和MVP设计模式

發布時間:2025/3/15 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mvc mvp_MVC和MVP设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考博客

http://www.cnblogs.com/end/archive/2011/06/02/2068512.html

####MVC模式

M:model 模型

V:view視圖

C:controller控制器

>我們知道,所有的軟件的構成主要有兩部分,分別是用戶交互入口(USER INTERFACE)和數據(DATA)。那么為什么UI(USER INTERFACE)稱為用戶交互入口呢?因為我們的用戶,在使用我們的軟件的時候,他們關心的并不是使用了什么技術實現的,考慮更多的是這個功能好不好用,這個交互舒服不舒服。那么用戶在通過視覺和通過操作使用我們軟件的時候,接觸用戶的就是我們的界面,承載交互的就是我們界面上的控件。所以,UI稱之為用戶交互入口,因為有了視覺體驗有了感知,才會有行為,有了行為才能稱之為交互。用戶的行為,也就是交互,我們就是C(CONTROLLER)在處理,那么呈現在UI(USER INTERFACE)上面的內容,就是我們的數據,所以我們的M(MODEL)就是MVC中的數據模型。

在我們的android開發過程中,本質上并沒有完全遵循MVC架構模式。以Activity為例:

它可以是V也可以使C。因為Activity能兼容了View和Controller的基本特征。那么,在Android中,MVC在哪些場景下體現的比較準確呢?以列表級控件的使用為例(ListView,GridView):我們需要聲明ListView這個外層容器,然后定義Item的UI樣式,然后通過適配器將UI和數據進行匹配,最后將適配器和控件進行綁定。那么這個就是我們MVC軟件架構模型的一個很清晰的體現,在列表級控件中,我們使用了Adapter,在設計模式中,稱之為適配器模式。所以在這個小例子中,就要體會一下軟件架構模型和設計模式的區別。

![](http://images2015.cnblogs.com/blog/1061881/201705/1061881-20170502204735961-1299977060.png)

####MVP模式

M:model 模型

V:view 視圖

P:presenter 中間人

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

![](http://images2015.cnblogs.com/blog/1061881/201705/1061881-20170502205017898-423547242.png)

>所以,綜上,MVP相比較MVC我們發現,它的靈活性更高了,并且,拆解效率非常明顯。總結一句話就是,MVP在復雜業務背景下,解耦和擴展效果突出。

MVP 的缺點:model 層與 Presenter 層,presenter層與 view 層之間通過接口建立聯系,這樣會導致當頁面邏輯很復雜的時候,View 層實現的接口會很多,如果你的App中有很多復雜的頁面,維護接口的成本會變的很大。

#### MVVM 模式

MVVM 模式將 Presenter 改名為 ViewModel,基本與MVP模式一致

區別在于 View 層與 ViewModel 層通過 DataBinding相互綁定。View層的變動,自動反應在 ViewModel 層,反之亦然

### Dagger2在MVP中所發揮的作用

Dagger2是為Android和Java平臺提供的編譯時進行依賴注入的框架,編譯時生成代碼,完成所需對象的注入,解決了基于反射帶來的開發和性能上的問題。主要是用于界面和業務之間的隔離

使用步驟:

>0.添加依賴

>0.借助工具生成編譯注解器(在gradle中進行配置),在編譯時起作用

>1.指定要注入的目標(@inject)

>2.創建dagger文件,創建module類(@module,@presenter)

>3.通過接口建立Activity和Module之間的關系(@component)

>4.rebuild 編譯生成代碼

>5.使用那個類

![](http://images2015.cnblogs.com/blog/1061881/201704/1061881-20170425231236537-2061171856.png)

![](http://images2015.cnblogs.com/blog/1061881/201705/1061881-20170502205419961-1042417469.png)

>“可參考的博客:http://blog.csdn.net/tiankong1206/article/details/46486401”

### Retrofit

利用注解和okHttp實現和服務器的數據交互

用法

0.添加依賴并進行配置

1.創建model數據模型

2.定義REST API接口

3.創建Retrofit對象并發起請求

### RxJava

本質是一個在java VM 上使用可觀測序列的基于事件程序的異步操作庫,使用簡潔的邏輯處理復雜的任務的一個異步操作庫。

可以輕松處理不同環境下的后臺線程和UI線程庫

關鍵字:簡潔,異步,隊列化

![](http://images2015.cnblogs.com/blog/1061881/201705/1061881-20170502221056179-1270622283.png)

總結

以上是生活随笔為你收集整理的java mvc mvp_MVC和MVP设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。