日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
不必糾結(jié)MVC還是MVP了,聽我說兩句~

MVC全稱是Model-View-Controller 也就是模型–視圖–控制器,是在1970年的時候提出由TrygveReenskaug在Smalltalk-80系統(tǒng)上***提出的。

成都創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,成都做網(wǎng)站、網(wǎng)站制作,網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千家服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!

SmallTalk在百度百科的解釋是這樣:

Smalltalk被公認為歷史上第二個面向?qū)ο蟮某绦蛟O(shè)計語言和***個真正的集成開發(fā)環(huán)境 (IDE)。

來張圖說明一下MVC的工作模式吧!

圖中紅色小框框就是MVC的工作模式

  • 從圖中可以看出用戶向View發(fā)送指令,再有View直接要求Modle改變狀態(tài)。
  • 用戶也可以直接向Controller發(fā)送指令,再由Controller發(fā)送給Model,在通過Model去改變View的狀態(tài)。
  • 所以MVC框架模式View和Model之間的聯(lián)系還是相當(dāng)緊密的,耦合度還是很高,后期維護改動View需要將Model中的內(nèi)容也要改動。

MVC是一種框架模式而非設(shè)計模式

其優(yōu)點是:

  • 理解起來比較容易,技術(shù)含量并不高,對開發(fā)和維護來說易于維護和修改
  • 耦合度不高,表現(xiàn)層與業(yè)務(wù)層分離,各司其職。

其缺點是:

  • 它定義不是很明確,完全理解MVC模式并不容易。
  • 使用MVC需要精心策劃,因為你它的內(nèi)部原理比較復(fù)雜
  • 一些小的項目采用MVC框架反而會更加復(fù)雜

MVC的Android偽代碼實現(xiàn)

以下圖片中代碼與數(shù)據(jù)不匹配,只是為了方便理解MVC在代碼中如何寫,需要看實例的可以去網(wǎng)上了解,我在這里就偷懶了:)

  • 首先你需要一個View視圖,也就是XML布局。 

 

  • 然后你還需要一個Model

也就是數(shù)據(jù),可以是數(shù)據(jù)庫中的內(nèi)容,也可以是在代碼中寫的List集合。   

  • ***需要一個Controller,也就是Activity或者Fragment

通過在Controller中對用戶在View中傳遞過來的操作,進行訪問model中的數(shù)據(jù),然后改變View中的狀態(tài)。  

MVP是MVC的一個演化版本,全稱是Model-View-Presenter。

MVP的出現(xiàn)主要就是解決MVC中的View和Model的耦合性高的的問題,同時又帶來了很好的擴展性。

MVP模式的三個角色的作用:

  • Presenter-中介

主演溝通View和Model的橋梁,他從Model獲取數(shù)據(jù)后返回給View層,是的View層和Model層之間沒有耦合,從而獎業(yè)務(wù)邏輯從View層抽離。

  • Model-房主

Model主要提供數(shù)據(jù)的存取功能,Presenter需要通過Model層存儲、獲取數(shù)據(jù),Model層就像是一個倉庫。

  • View-用戶

View通常是指Activity、Fragment或者某個View控件。它含有一個Presenter成員變量,同時它需要實現(xiàn)一個邏輯接口,獎View上的操作轉(zhuǎn)交割Presenter進行實現(xiàn),***Presenter調(diào)用View邏輯接口將結(jié)果返回給View元素。

來張圖說明一下MVP的工作模式吧 

  

從圖中我們可以看出MVP和MVC之間的額***區(qū)別:

  • VIew和Model之間徹底的解耦
  • MVP是面向接口編程,也就是說用戶不必知道我是具體如何實現(xiàn)額,用戶只要知道有這個功能,直接調(diào)用即可。

MVP的Android偽代碼實現(xiàn)

以下圖片中代碼與數(shù)據(jù)不匹配,只是為了方便理解MVC在代碼中如何寫,需要看實例的可以去網(wǎng)上了解,我在這里就偷懶了:)

  • 首先需要一個Presenter,作為View和Model的中間人   

 

  • 然后你還需要一個View以及ViewImpl接口   

    

  • ***你還需要Model一個ModelImpl接口   

 

為什么說不必糾結(jié)是MVC還是MVP呢?

MVC和MVP的最終目的就是要數(shù)據(jù)和UI分離,互相不影響。那么如何能不必糾結(jié)而做到呢??你聽說過面向?qū)ο髥?聽過再聽聽我的理解~

  • 面向?qū)ο?/li>

封裝、多態(tài),繼承。老師好像也都是這么教的,那么到底說明是多態(tài)封裝繼承呢?

  • 封裝

封裝就是將用戶不想看到的東西封裝起來,可以用到面向?qū)ο笾械?Private。

屬性,將用戶不想看到的內(nèi)容寫在這里面。比如收音機上的播放功能,用戶不用知道收音機如何播放,它只需要知道摁下這個鍵能播放即可。

  • 多態(tài)

多態(tài)就是一個對象的多種表現(xiàn)形態(tài),主要表現(xiàn)為:行為多態(tài)和狀態(tài)多態(tài)。

行為多態(tài)就好比一個父親有多個孩子,每個孩子都不一樣,但是都是同一個父親;狀態(tài)多態(tài)就好比每個孩子在一天中有好多個狀態(tài)變現(xiàn),有吃飯,學(xué)習(xí),睡覺。

  • 繼承?不!我想說的是對象!

我的一個朋友告訴我繼承其實是對面向?qū)ο蟮?**誤解。繼承我們可以理解成一個對象他有多個小對象組成;比如人這個對象是由手腳,腦袋…等其它小對象組成。因此繼承我們可以不去記住,我們只要對每個對象有深刻的認識即可把對象描述清楚!

那么MVC、MVP與面向?qū)ο笥惺裁搓P(guān)系呢??

首先MVC和MVP都是要求數(shù)據(jù)和UI之間互不影響,那么面向?qū)ο蟛痪褪菃??

  • 面向?qū)ο骎iew?

對象也就是我們說的用戶也就是MC或者MVP中View,用戶需要什么我們就展示給其什么,不需要的我們將其封裝起來提供一個方法給你調(diào)用即可,這是不是和MVC或者MVP中很像!

  • 面向?qū)ο驧odel?

同時面向?qū)ο笠彩切枰獙ο蟮男袨榧毞?,比如人可以跑,可以游泳…這是不是和MVC中的Model一樣,需要處理用戶不同的操作。

  • 面向?qū)ο驝ontroller?

***面向?qū)ο笠彩切枰粋€狀態(tài)去控制的,比如人的大腦。通過大腦去協(xié)調(diào)手和腳的平衡。


網(wǎng)頁標題:不必糾結(jié)MVC還是MVP了,聽我說兩句~
分享網(wǎng)址:http://www.5511xx.com/article/ccoisci.html