隨筆-348  評(píng)論-598  文章-0  trackbacks-0

          如果把這三者放在一起比較,先說一下三者的共同點(diǎn),也就是Model和View:

          • Model:數(shù)據(jù)對(duì)象,同時(shí),提供本應(yīng)用外部對(duì)應(yīng)用程序數(shù)據(jù)的操作的接口,也可能在數(shù)據(jù)變化時(shí)發(fā)出變更通知。Model不依賴于View的實(shí)現(xiàn),只要外部程序調(diào)用Model的接口就能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的增刪改查。

          • View:UI層,提供對(duì)最終用戶的交互操作功能,包括UI展現(xiàn)代碼及一些相關(guān)的界面邏輯代碼。

          三者的差異在于如何粘合View和Model,實(shí)現(xiàn)用戶的交互操作以及變更通知

          • Controller

          Controller接收View的操作事件,根據(jù)事件不同,或者調(diào)用Model的接口進(jìn)行數(shù)據(jù)操作,或者進(jìn)行View的跳轉(zhuǎn),從而也意味著一個(gè)Controller可以對(duì)應(yīng)多個(gè)View。Controller對(duì)View的實(shí)現(xiàn)不太關(guān)心,只會(huì)被動(dòng)地接收,Model的數(shù)據(jù)變更不通過Controller直接通知View,通常View采用觀察者模式監(jiān)聽Model的變化。

          • Presenter

          Presenter與Controller一樣,接收View的命令,對(duì)Model進(jìn)行操作;與Controller不同的是Presenter會(huì)反作用于View,Model的變更通知首先被Presenter獲得,然后Presenter再去更新View。一個(gè)Presenter只對(duì)應(yīng)于一個(gè)View。根據(jù)Presenter和View對(duì)邏輯代碼分擔(dān)的程度不同,這種模式又有兩種情況:Passive View和Supervisor Controller。

          • ViewModel

          注意這里的“Model”指的是View的Model,跟MVVM中的一個(gè)Model不是一回事。所謂View的Model就是包含View的一些數(shù)據(jù)屬性和操作的這么一個(gè)東東,這種模式的關(guān)鍵技術(shù)就是數(shù)據(jù)綁定(data binding),View的變化會(huì)直接影響ViewModel,ViewModel的變化或者內(nèi)容也會(huì)直接體現(xiàn)在View上。這種模式實(shí)際上是框架替應(yīng)用開發(fā)者做了一些工作,開發(fā)者只需要較少的代碼就能實(shí)現(xiàn)比較復(fù)雜的交互。



          ---------------------------------------------------------
          專注移動(dòng)開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2017-05-10 11:03 TiGERTiAN 閱讀(441) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 措美县| 乾安县| 钟山县| 格尔木市| 宁南县| 扶绥县| 高安市| 南部县| 资兴市| 客服| 鄯善县| 顺平县| 廉江市| 沙湾县| 南开区| 静乐县| 崇义县| 龙里县| 大方县| 太康县| 甘肃省| 西吉县| 射洪县| 彭山县| 五莲县| 丰城市| 同德县| 都匀市| 鄂托克旗| 虎林市| 曲阳县| 理塘县| 西乌珠穆沁旗| 隆德县| 葫芦岛市| 宽甸| 平定县| 江山市| 凌云县| 葵青区| 黔南|