亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5401 | 回復(fù): 7
打印 上一主題 下一主題

輕松理解PHP JAVA MVC 設(shè)計模式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-01-16 15:46 |只看該作者 |倒序瀏覽
有人問我,什么是MVC 設(shè)計模式, 我通常說你就是M, 即Model模型

喝口茶,且聽我慢慢道來。
MVC設(shè)計模式(Model模型-View視圖-Controller控制器)一種“軟件架構(gòu)模式”。與開發(fā)語言無關(guān),在PHP JAVA .NET,Python,Ruby的開發(fā)中都會用到。不要被“軟件架構(gòu)模式”這樣的詞嚇到,所謂“軟件架構(gòu)”,就是如何把很多代碼組織在一起,而“模式” 就是經(jīng)驗的意思。如果你去做促銷員,培訓(xùn)老師會教你如何如何與顧客溝通,這些以前成功銷售員總結(jié)的經(jīng)驗,起個名字就叫模式。

近年來,MVC設(shè)計模式在網(wǎng)頁開發(fā)中應(yīng)用廣泛,事實上MVC 設(shè)計模式是一種思想,不只應(yīng)用在網(wǎng)頁開發(fā)中,這里我們主要以網(wǎng)頁WEB開發(fā)為主。主流的WEB開發(fā)語言都有很多優(yōu)秀的MVC框架,如PHP系的 Cakephp,Zend FrameWork, JAVA系的Struts,Spring,  Ruby系的Ruby on Rails,Python系的Django,本文與PHP為例,通過比喻說明MVC的思想。

第一個比喻:
在一個小型軟件公司里,程序員就是Model模型,項目經(jīng)理就是Controller控制器,銷售員就是View視圖.
我們來看程序員,項目經(jīng)理,銷售員的關(guān)系。項目經(jīng)理通常不作具體的事,負責(zé)工作分配。
項目經(jīng)理的工作就是將不同的任務(wù)合適的分配給不同的程序員,而程序員通常是接到任務(wù)后,埋頭工作,完成后交給項目經(jīng)理。而銷售員的工作則是將產(chǎn)品以不同的形勢包裝后出售。

程序員看來是同一個東西的數(shù)據(jù)庫管理程序,銷售員能稍做修改后,包裝成人力資源系統(tǒng),客戶管理系統(tǒng)等等。簡單的說:程序員做具體的事,項目經(jīng)理管工作調(diào)度,銷售員包裝展示產(chǎn)品。這就是MVC。
MVC 翻譯為模型-視圖-控制器,是字面翻譯。我覺得MVC意譯為:處理-展示-調(diào)度容易理解些。

回到開篇的問題,"有人問我,什么是MVC 設(shè)計模式, 我通常說你就是M, 即Model模型"
為什么這么說呢?應(yīng)為提問的人通常是程序員,程序員就是管做事的,不同的的項目經(jīng)理可讓同一個程序員來做事,就像不同的Controller控制器可以調(diào)用同一個Model模型。

第二個比喻:以一個餐館做比喻。在只有一老板的小店,通常是這樣的:你說老板,來碗蛋炒飯,老板收錢后,去廚房炒飯,飯好后給你端上來。一個人搞定,沒有問題。這樣的小店還不少。
這就像一些老資格的PHP程序員,喜歡用VI裸寫,在一個文件里搞定一切。

再來看一個大一些的餐館,因為顧客很多,就有了分工,廚師只管炒飯,有專門的調(diào)度人員將不同的訂單分配給不同的廚師,有服務(wù)員負責(zé)上菜。這里廚師就是Model模型,調(diào)度人員就是Controller控制器,上菜的服務(wù)員就像View視圖,同樣的蛋炒飯有的顧客要帶走,就要用餐盒打包,有的顧客在餐館茶館吃,就要給放到碗里給顧客。至于蛋炒飯要不要打包,廚師不管,就像Model層負責(zé)返回數(shù)據(jù),至于以PDF或是HTML展示,這是VIEW層的工作。

在MVC 設(shè)計模式中,提倡分工和專注。也就是說,各個角色做好本職工作,而不提倡越俎代庖。第一個軟件公司的比喻來說,項目經(jīng)理管工作分配的就不用做具體事,程序員做具體的事就不要管工作分配。

現(xiàn)在,PHP,JAVA,Ruby,Python等開發(fā)語員都有現(xiàn)成的框架可用。通過使用這些框架可以幫助程序員很好的應(yīng)用MVC設(shè)計模式,
這里要著重說一點:使用了現(xiàn)成的框架不等于應(yīng)用了MVC設(shè)計模式,不使用框架不等于沒有是用MVC模式。
以PHP開發(fā)為例,好的程序員,不用框架MVC也分的清清楚楚。而有的程序員即使用了像Cakephp這樣的框架,MVC也分不清楚,如在 Controller里過多的邏輯處理代碼,還有就是硬輸出HTML標記。正確的辦法是,Controller只負責(zé)對象函數(shù)調(diào)用,冗長的邏輯處理代碼放到Model,Model處理邏輯后返回數(shù)組,變量或是對象,Model和Controller不要直接輸出HTML標記。簡單的說在Model 和 Controller 里盡肯的不要用echo直接數(shù)據(jù)到瀏覽器端。用return 返回數(shù)據(jù)的好處是:返回的數(shù)據(jù)可以于HTML,PDF,XML不同界面展示。

這里給PHP程序員個建議,不管你是否框架,每次想使用echo顯示數(shù)據(jù)時,想一想,數(shù)據(jù)能否先放到數(shù)組里稍后再用?可以的話,就先放到數(shù)組里。除非沒有其他辦法,否則不要用echo,這樣你的view層就能和其他程序分得很清楚。

喝口茶,講點題外話,很多程序員認為,程序員不過是IT民工,辛苦又不掙錢,不能一輩子些程序,先干段時間的開發(fā)工作,等到30歲后,向項目經(jīng)理發(fā)展。這就是從Model 層向Controller 層發(fā)展。而有的項目經(jīng)理又想,成天這個項目,那個項目,都是給人打工,看看大學(xué)的一個做銷售老同學(xué),什么產(chǎn)品也不開發(fā),就把別人的產(chǎn)品拿過來包裝一下,輕松掙錢。項目經(jīng)理想著向銷售發(fā)展,這就像是從Controller 層向View層發(fā)展。
這是一個不是很嚴謹?shù)腥さ谋扔鳌?br />
前面提到老PHPer不喜歡用框架,喜歡用VI 裸寫。這里并非提倡或發(fā)對是否用框架。
就像前面餐館的比喻,有些一個老板的小店能長期經(jīng)營,而分工明確的大店也可能經(jīng)驗不善。

物以致用,沒有最好的,只有最合適的。

原文:
輕松理解PHP JAVA MVC 設(shè)計模式

論壇徽章:
0
2 [報告]
發(fā)表于 2011-01-16 16:49 |只看該作者
用起來了,就知道了。

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀念徽章
日期:2015-07-20 11:05:27IT運維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
3 [報告]
發(fā)表于 2011-01-16 20:04 |只看該作者
PHP的MVC框架也有不錯的。

論壇徽章:
0
4 [報告]
發(fā)表于 2011-01-18 10:31 |只看該作者
模式只是別人一種習(xí)慣,要么適應(yīng)別人,要么用自己的喜好,沒有什么習(xí)慣是必須和一定的,只要大家能接受,創(chuàng)造小團體的習(xí)慣也未嘗不可

論壇徽章:
0
5 [報告]
發(fā)表于 2011-01-18 17:12 |只看該作者
誰才有資格去比較和評價兩種框架呢
先用熟了再說吧

論壇徽章:
0
6 [報告]
發(fā)表于 2011-03-11 11:14 |只看該作者
如果團隊較大,分工清楚是很有好處的,,頂,,

論壇徽章:
0
7 [報告]
發(fā)表于 2011-03-13 14:51 |只看該作者
真正實現(xiàn)mvc需要很好的設(shè)計和規(guī)范來進行跟蹤。

論壇徽章:
0
8 [報告]
發(fā)表于 2011-03-24 12:08 |只看該作者
說的不錯, 比喻很生動
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP