<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    咖啡伴侶

    呆在上海
    posts - 163, comments - 156, trackbacks - 0, articles - 2

    MVC與MVP

    Posted on 2010-02-28 15:38 oathleo 閱讀(2849) 評論(6)  編輯  收藏 所屬分類: Java
    很長一段時間,對MVC和MVP區(qū)別很是模糊。
    一直忙碌于客戶不停的需求中,忽略了產(chǎn)品本身上這些最重要的東西。
    現(xiàn)在即將待業(yè),放下自己為之工作近三年的產(chǎn)品,真的感覺猶如失去自己的孩子。
    好的一方面是空閑的時間多了,終于可以想想這些事情了。

    MVC算是個被人說爛掉的東西了,MVP也屢屢被人提及。
    最大的區(qū)別在哪里呢?為什么要再演變個MVP出來呢?

    就定義上來說最大的區(qū)別在于C和P,就構(gòu)架上來說,是View層實(shí)現(xiàn)的方式不同。
    MVC:View層肩負(fù)很大任務(wù),View關(guān)聯(lián)Model,View的渲染是直接通過Model層的數(shù)據(jù)來確定的。還是有很多業(yè)務(wù)邏輯在View上完成。
    MVP:View層的任務(wù)大大縮減,View不再知道Model,P層完成上面提到的View層完成的業(yè)務(wù)邏輯。
    總之一句話MVP里,View層絕對不能再訪問Model了,

    任何一種設(shè)計模式的出現(xiàn)絕對不是為了出現(xiàn)而出現(xiàn)的。總是為了解決現(xiàn)實(shí)中存在的某些老的模式無法或難以解決的問題才出現(xiàn)的。

    為什么會出現(xiàn)MVP呢?
    看看客戶拿到一個設(shè)計精良的MVC的產(chǎn)品,做二次開發(fā)的時候,如果他項(xiàng)目足夠大,肯定會發(fā)現(xiàn)MVC的好處。任務(wù)集中在Model層,設(shè)計好Model層數(shù)據(jù)的填充,簡單的實(shí)現(xiàn)就完成了。MVC的架構(gòu)幫他解決了很多問題,大家很Happy!
    當(dāng)然客戶的需求總是永無止境的,當(dāng)簡單需求被滿足的時候,他又會往高層次發(fā)展,也許他就完全需要不同的View來做同樣的Model的展示(比如一個在JSP,一個在Swing或者Android上),在這個時候,稍微想下,他就發(fā)現(xiàn)他要做的任務(wù)開始變的很大了。Model層的數(shù)據(jù)縱使可以共享,事件控制(轉(zhuǎn)發(fā))也能,而View層無論如何是逃不了了。于是Web程序員硬著頭皮也要學(xué)Swing,Swing的程序員郁悶的學(xué)JSP。
    試想這個時候如果有個人,能把陷在View上的上萬行code,拉到一個即能聯(lián)系到Model,又能聯(lián)系到View的層次上,那真的要感謝蒼天大地了。

    MVP我想應(yīng)該就是在這個時候出現(xiàn)的。它處理所有View和Model之間的消息傳遞,數(shù)據(jù)更新,交互操作。比如從Swing的TextField里輸入個字段信息,和從JSP里的Form里輸入這個字段信息,處理的流程應(yīng)該是可以共享這段代碼的。當(dāng)然這個時候,為了解決不同View上的一些特殊情況,可以使用適配器模式,來處理多個View的程序設(shè)計問題。

    設(shè)計模式?jīng)]有好壞之分,只有合不合適。你的產(chǎn)品如果只需要輸入個A返回個B,沒有平臺建議,沒有系統(tǒng)升級,那就忘了所有的設(shè)計模式,走那條最快實(shí)現(xiàn)的路吧。

    Feedback

    # re: MVC與MVP  回復(fù)  更多評論   

    2010-03-01 09:18 by Aspen
    "完全需要不同的View來做同樣的Model的展示",這不就是MVC?

    # re: MVC與MVP  回復(fù)  更多評論   

    2010-03-01 10:37 by /admin
    不是看的很明白

    # re: MVC與MVP  回復(fù)  更多評論   

    2010-03-01 12:58 by oathleo
    @Aspen
    比如一個項(xiàng)目,先在Swing的View里寫了一堆邏輯代碼,后面升級到BS模式,會發(fā)現(xiàn)Swing的View里的這些邏輯,其實(shí)很多BS里同樣需要用的

    # re: MVC與MVP  回復(fù)  更多評論   

    2010-03-01 22:02 by 凡客誠品
    是大幅減少的糾紛

    # re: MVC與MVP[未登錄]  回復(fù)  更多評論   

    2010-03-03 09:15 by test
    http://www.chenfangfang.com

    # re: MVC與MVP  回復(fù)  更多評論   

    2010-03-03 11:14 by oathleo
    @Aspen
    可能jsp和swing的例子舉的確實(shí)是很不恰當(dāng)。
    這樣來說:
    系統(tǒng)有兩套View
    一套AWT,一套Swing,都是Java實(shí)現(xiàn)

    這個時候MVC模式下,View上的很多邏輯代碼,就可能有很多可以共享。而這些代碼放在Model層上顯然不合適(因?yàn)檫@些代碼可能需要View的實(shí)例),這個時候P層的出現(xiàn)就可以解決這個問題。
    主站蜘蛛池模板: 亚洲电影在线播放| 久久久久亚洲AV成人网人人网站| 18女人水真多免费高清毛片| 中文字幕久无码免费久久| 一个人晚上在线观看的免费视频| 国产亚洲精品美女久久久久| 国产午夜亚洲精品不卡电影| 国产成人精品久久亚洲高清不卡| 无码亚洲成a人在线观看| 精品国产_亚洲人成在线| 美国免费高清一级毛片| 特级毛片在线大全免费播放| 一级看片免费视频囗交| 中文在线免费视频| 最好免费观看高清在线| 免费无码毛片一区二区APP| 99久久99这里只有免费费精品| 九九精品免费视频| 午夜高清免费在线观看| 免费观看国产小粉嫩喷水| 亚洲成人国产精品| 在线观看亚洲精品福利片| 久久精品国产亚洲夜色AV网站| 久久亚洲中文字幕精品有坂深雪| 亚洲成在人线电影天堂色| 色天使亚洲综合在线观看| 国产精品久久亚洲一区二区| 一区二区三区免费视频网站| 免费在线观看一级片| 中文免费观看视频网站| 成人男女网18免费视频| 免费一级毛片不卡在线播放| 国产亚洲大尺度无码无码专线| 亚洲无线电影官网| 亚洲一区AV无码少妇电影| 特级毛片A级毛片免费播放| 中文字幕视频免费在线观看| 18禁无遮挡无码国产免费网站| 四虎成人免费网址在线| 中文字幕亚洲综合久久男男| 亚洲国产精品久久66|