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

Chinaunix

標(biāo)題: 輕松理解PHP JAVA MVC 設(shè)計(jì)模式 [打印本頁(yè)]

作者: riverlet    時(shí)間: 2011-01-16 15:46
標(biāo)題: 輕松理解PHP JAVA MVC 設(shè)計(jì)模式
有人問(wèn)我,什么是MVC 設(shè)計(jì)模式, 我通常說(shuō)你就是M, 即Model模型

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

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

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

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

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

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

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

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

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

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

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

物以致用,沒(méi)有最好的,只有最合適的。

原文:
輕松理解PHP JAVA MVC 設(shè)計(jì)模式
作者: 2gua    時(shí)間: 2011-01-16 16:49
用起來(lái)了,就知道了。
作者: renxiao2003    時(shí)間: 2011-01-16 20:04
PHP的MVC框架也有不錯(cuò)的。
作者: nsnake    時(shí)間: 2011-01-18 10:31
模式只是別人一種習(xí)慣,要么適應(yīng)別人,要么用自己的喜好,沒(méi)有什么習(xí)慣是必須和一定的,只要大家能接受,創(chuàng)造小團(tuán)體的習(xí)慣也未嘗不可
作者: starzhestarzhe    時(shí)間: 2011-01-18 17:12
誰(shuí)才有資格去比較和評(píng)價(jià)兩種框架呢
先用熟了再說(shuō)吧
作者: hbeimf    時(shí)間: 2011-03-11 11:14
如果團(tuán)隊(duì)較大,分工清楚是很有好處的,,頂,,
作者: surpass_li    時(shí)間: 2011-03-13 14:51
真正實(shí)現(xiàn)mvc需要很好的設(shè)計(jì)和規(guī)范來(lái)進(jìn)行跟蹤。
作者: wutwei    時(shí)間: 2011-03-24 12:08
說(shuō)的不錯(cuò), 比喻很生動(dòng)




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2