隨筆-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 閱讀(440) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 永昌县| 永宁县| 马山县| 奇台县| 丰原市| 巫山县| 巴楚县| 涿州市| 连南| 东港市| 曲阜市| 壶关县| 股票| 沁源县| 罗源县| 耒阳市| 罗山县| 临武县| 恩施市| 老河口市| 大余县| 宁阳县| 车险| 吴川市| 台安县| 山西省| 江川县| 宁化县| 苏尼特左旗| 长沙市| 特克斯县| 昭平县| 喀喇沁旗| 弥渡县| 五原县| 固始县| 视频| 务川| 寻甸| 锦州市| 同江市|