国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MVC架構模式為什么這樣“紅”?

開發 開發工具
模型-視圖-控制器(MVC)可能是近年來網絡編程圈子里最常被提及的模式之一,目前與網絡應用開發沾邊的人聽到和看到這個字母縮寫的次數肯定不下百次。本文我們將詳細闡述一下MVC的含義,以及它變的如此流行的原因。

模型-視圖-控制器(MVC)可能是近年來網絡編程圈子里最常被提及的模式之一,其在Java及.Net領域都有廣泛的應用,特別是微軟***推出的ASP.NET MVC 2框架,能夠幫助廣大程序員更快捷的開發。51CTO編輯推薦ASP.NET MVC框架視頻教程

MVC不是一種設計模式(design pattern),它是一種架構模式(Architectural pattern),用以描述應用程序的結構以及結構中各部分的職責和交互方式。它***是在1979年的時候***次被人提出,不過,當時環境有些不同,網絡應用的概念在當時還不存在。

提姆·伯納斯李在上世紀九十年代初期的時候播種下了萬維網(WWW)的種子,并永遠的改變了世界。目前我們在網絡開發中所采用的這種模式實際上是原版模式的一個改編版。

這種架構模式的瘋狂流行是由于兩個極其流行的開發框架將這種模式包含了進來,它們是:Struts 和 Ruby on Rails。這兩個開發框架給稍后誕生的數百框架打上了深深的烙印。

[[9852]]

網絡應用中的MVC模式

模型-視圖-控制器架構模式背后的思想非常簡單:我們的應用程序中必須區分下面這些職責:

模型-視圖-控制器架構模式

應用程序被分成了三個主要的部分,每個部分負責掌管不同的任務。下面讓我們看看詳細的解釋以及一個例子。

控制器

控制器掌管著用戶的請求(當用戶點擊圖形用戶界面(GUI)上的元素執行操作時,控制器會收到HTTP GET或者POST請求)。它的主要功能就是調用并協調需要的資源/對象來執行用戶請求。通常控制器會為任務調用合適的模型,以及選擇合適的視圖。

模型

模型是指運用于數據之上的數據規則和數據內容,它一般對應于應用程序所要管理的對象。在軟件系統中,任何事物都可以被抽象成可以對其以某種方式進行處理的數據模型。應用程序中的用戶,信息以及圖書是什么?它們只是一堆必須按照對應規則處理的數據(日期不能是未來的日期,電子郵件有特定的格式,名字的長度不能超過多少字符等等)。

模型

模型給控制器提供了一個用戶請求內容對應的數據表達(比如信息,書,相冊)。不管我們如何向用戶展示,這個數據模型都不會變。這也是我們為什么可以隨意選擇使用哪個視圖來展示數據的原因。模型包含我們應用程序邏輯中最重要的組成部分,這些邏輯運用于我們要處理的問題過程中。控制器更多的是包含應用程序自身的內部組織邏輯。

視圖

視圖提供了展示模型數據的不同方式。它可能是數據填充的模板。視圖可以有多個,而控制器則決定使用哪個視圖。一個網絡應用通常由許多控制器,模型和視圖組成。控制器可以被看成是一個主控制器,用于接收用戶的所有請求,然后在調用特定的控制器來處理不同的情況。

讓我們看一個例子

現在,假設,我們正在開發一個在線書店。用戶可以進行如下操作:查看圖書。注冊,購買,往當前訂單添加物品,創建和刪除圖書(如果他有管理員權限的話)。現在讓我們看看當用戶單擊“幻想”門類來查看該門類下有哪些書時會發生什么情況。

我們會有一個特定的控制器來處理所有與圖書相關的操作(查看,編輯,創建等操作)。這個例子中,我把該控制器命名為 books_controller.php。我們也會有一個模型(比如 book_model.php)來處理數據和與商店中圖書物品相關的邏輯。***我們還有一些視圖來展示數據,比如圖書清單,一個編輯圖書的頁面等等。下面這幅圖展示的是用戶發出的查看請求是如何處理的:

實例

控制器(books_controller.php)以HTTP GET或者POST的方式接收到用戶的請求(我們也可以有一個主控制器,比如index.php 來接收請求,然后它再調用ooks_controller.php)。

控制器檢查請求以及對應的參數,然后調用模型(book_model.php),請求模型返回幻想類的圖書。模型負責從數據庫中調取信息,如有需要它可以加入過濾和邏輯,然后返回圖書列表。控制器使用恰當的視圖來將這些數據展示給用戶,如果用戶還選擇了特定皮膚,對應的視圖文件也會被選上等等。#p#

MVC的好處是什么

我們使用MVC的一個最明顯好處就是它將視圖展示和應用邏輯清晰的分離開來。對不同用戶以及不同設備類型的支持一直是當下的一個常見問題。來自臺式電腦和手機的請求所得到的視圖應該是不相同的。模型會返回完全相同的數據,但是不同的地方是控制器會選擇使用的視圖文件來展示數據(我們可以把它看作是不同的模板)。除了將視圖從業務邏輯中分離開外,MVC的分離也降低了大型應用設計的難度。代碼也更具結構性,因此也更容易維護,測試和重用。

但是為什么要框架呢?

當你使用一個框架時,MVC的基本結構已經包含在其中,你只需對這些結構進行擴充,將你的文件遵照MVC的模式放置到合適的目錄中去。而且它也提供許多現成并且經過完全測試的功能。以CakePHP最為MVC框架的例子。你一旦安裝好以后,你會發現它包含三個主要的目錄:

  1. * app/  
  2. * cake/  
  3. * vendors/ 

APP文件夾是放置你應用程序文件的地方。這是你開放應用程序的地方。Cake文件夾是Cakephp的文件存放位置以及開發的地方(框架的重要功能就在里面)Vendors文件夾是用來存放所需要的第三方PHP庫文件的位置。你的工作文件夾(APP文件夾)又有下面這些結構:

  1. * app/  
  2. config/  
  3. controllers/  
  4. locale/  
  5. models/  
  6. plugins/  
  7. tests/  
  8. tmp/  
  9. vendors/  
  10. o views/  
  11. o webroot/ 

現在你需要將你的控制器放置到controllers目錄下,你的模型放置的models目錄下,而視圖文件則在views目錄下。一旦你熟悉了框架,你就能在你需要修改和創建代碼時,知道應該在哪里動手。這種文件組織方式讓維護容易上不少。

以框架為例

因為這個教程并不打算教你如何使用CakePHP制作一個應用程序,我們只是用它來展示一下模型,視圖和控制器的演示代碼,并對使用MVC框架所帶的好處做一個評論。這些代碼都是簡化了的,并不適合實際的應用。

控制器

使用CakePHP框架,我們的控制器的樣子像下面這樣:

  1. <?php    
  2. class BooksController extends AppController {    
  3.        
  4. function list($category) {    
  5.      
  6. $this->set('books', $this->Book->findAllByCategory($category));    
  7.      
  8. }    
  9.     
  10. function add() { ... ... }    
  11.       
  12. function delete() { ... ... }    
  13.     
  14. ... ... } ?>  

很簡單,是吧。這個控制器會被保存成 books_controller.php,并放置在/app/controllers目錄下。它包含一個列表(list)函數,用以執行我們例子中的操作,它也可以包含其他與圖書相關的操作(像添加新圖書,刪除新圖書)

框架為我們提供了許多內容,羅列所有圖書只需一行代碼。我們在基本的控制器行為中定義的有一個基礎類,我們已經繼承了。(AppController繼承自Controller的)在list操作中,我們需要做的就是調用模型獲取數據,然后選擇合適的視圖文件來將數據展示給用戶,下面要我們解釋一下過程。this->Book是我們的模型,而下面這段代碼:

  1. $this->Book->findAllByCategory($category) 

則是在告訴模型返回所選門類下的圖書列表,下面的Set方法:

  1. $this->set('books', $this->Book->findAllByCategory($category)); 

是告訴控制器將數據傳輸給視圖。它將模型返回的數據以books的變量傳輸給視圖,然后視圖中就可以訪問該變量了。現在我們需要渲染視圖,如果你是使用默認視圖,CakePHP會幫你自動完成。如果你需要使用其他視圖,你則需要使用render方法來具體聲明:

模型

模型非常簡單。

  1. <?php    
  2.      
  3. class Book extends AppModel {     
  4.       
  5. }    
  6.      
  7. ?>  

為什么是空的?因為它從基礎類繼承了一些必須的功能,我們只需遵循CakePHP的命名規范,然后框架就會自動幫你完成其他事情。比如。通過名字,CakePHP知道,這個是BooksController中使用的模型。然后會自動訪問數據庫中一個叫books的數據表。這個定義,我們的book模型就具備從數據庫中讀取,刪除和保存數據的能力。這段代碼應該保存成books.php,并放置于/app/models文件下。

視圖

我們現在需要做的事情就是為list操作創建一個視圖(至少是一個)。這個視圖將使用HTML代碼,并且還包含一些PHP代碼來遍歷模型提供的 books數組。

  1. <table> <tr> <th>Title</th> <th>Author</th> <th>Price</th> </tr>    
  2. <?php foreach ($books as $book): ?> <tr> <td> <?php echo $book['Book']['title'];   
  3. ?> </td> <td> <?php echo $book['Book']['author'];   
  4. ?> </td> <td> <?php echo $book['Book']['price'];   
  5. ?> </td> </tr> <?php endforeach; ?>    
  6. </table>  

我們已經看到了,視圖文件并不生成一個完成的頁面,它只是一段HTML代碼。這是因為CakePHP提供了定義頁面布局的方法,而視圖則會被插入到布局中。在創建這些HTML片段時,框架也提供一些助手(helper)對象來幫我們完成常見的任務(插入表單,鏈接,Ajax或者 JavaScript),我們將這個默認視圖保存為list.ctp(list是操作的名稱,而ctp是指cake模板),然后將它放置在 /app/views/books下(之所以在books目錄下,是因為它是Book控制器的操作),至此在CakePHP的幫助下,這三部分都完成了。

結論

我們已經學習了當今最常用的架構模式MVC,我們需要注意,當我們在編程界提及的模式時,我們指的是可以用來解決手中問題的靈活架構。我們會發現實際使用會給我們看到的結構帶來變動。但最為重要的是,這種模式會幫助我們氣息的區分程序各部分的職責,便于程序維護,代碼重用以及測試。我們已經見識了使用MVC框架的好處,它給我們提供了一個基本的MVC骨架,以及許多有用的功能,提高了我們的效率,讓開發過程更加輕松。

【編輯推薦】

  1. 詳解ASP.NET MVC入門級實例教程
  2. 詳解PHP實現MVC的幾種方法
  3. 有關ASP.NET MVC框架的一些基礎知識
  4. MVC模式學習心得:主動與被動模式
  5. 專訪微軟MVP衣明志:走進ASP.NET MVC 2框架開發
責任編輯:王曉東 來源: 中文業界資訊站
相關推薦

2023-06-16 13:34:00

軟件架構模式

2024-11-08 09:41:02

2024-02-05 08:11:30

架構模式單體

2012-01-13 10:45:56

企業應用架構

2023-07-27 06:51:46

Android架構模式

2022-06-14 11:01:37

架構模式開發

2020-12-29 19:15:04

架構模式代碼分布式

2022-04-02 23:32:42

數據網格架構

2021-07-02 06:54:45

軟件架構模式

2017-06-20 09:54:18

大數據架構數據分析

2017-06-19 13:10:59

大數據大數據平臺架構

2023-07-04 07:53:53

MVCDDD架構

2018-05-24 11:38:17

2020-02-24 21:23:41

跨平臺想法嘗試

2024-09-18 09:04:33

架構模式查詢

2012-10-08 11:18:38

企業應用架構工作單元模式

2023-09-11 11:18:44

軟件開發架構

2022-07-27 20:37:45

主流企業架構

2024-06-04 00:00:04

2020-10-08 18:20:54

前端后端架構
點贊
收藏

51CTO技術棧公眾號

国产视频一区二区三区在线播放| 国产成人久久| 日韩成人在线观看| 久久久久九九精品影院| 午夜精品一区二区三区在线视| 99精品美女| 亚洲成年人专区| 亚洲免费成人av| 在线午夜影院| 国内久久久精品| 亚洲欧美日韩国产一区二区| 熟女性饥渴一区二区三区| 欧美日韩精品在线观看| 台湾佬中文娱乐网欧美电影| 国产成人福利网站| 另类小说一区二区三区| 成视人a免费观看视频| 日韩一区和二区| 精品中国亚洲| 日韩精品最新在线观看| 国产精品少妇自拍| 黄色小说在线播放| 国产精品成人播放| 国产乱淫av一区二区三区| 黄色小视频在线播放| 亚洲欧美日韩爽爽影院| 国产一区二区三区四区五区| 中文网丁香综合网| 五月激情丁香一区二区三区| 欧洲成人一区| 国产精品裸体一区二区三区| 国产区在线观看成人精品| 日本在线观看高清完整版| 国产成人精品a视频一区www| 国产福利不卡视频| 国产视频精选在线| 色与欲影视天天看综合网| 一区二区精品| 国产视频一二区| 中文字幕欧美日韩在线| 亚洲区一区二| 男女人搞j网站| 色999日韩欧美国产| 99日韩精品| 香蕉视频免费在线| 97精品视频在线播放| 丝袜诱惑亚洲看片| 四虎影视在线观看2413| 欧美区二区三区| 美女免费视频一区| 在线观看av的网站| 国产一区私人高清影院| 久久精品视频在线看| 特黄毛片在线观看| 久久亚裔精品欧美| 在线影院国内精品| 日韩毛片视频| 色偷偷亚洲第一综合| 一夜七次郎国产精品亚洲| 日韩精品乱码免费| 麻豆视频在线观看免费| 91免费福利视频| 夜夜嗨av一区二区三区四季av| 日本免费一区二区视频| 激情成人开心网| 亚洲国产精品字幕| 久久午夜电影| 免费在线观看黄色网| 亚洲综合精品伊人久久| 亚洲一区二区在线播放相泽 | 欧美日韩精品二区第二页| 久久国产精品色| 男女啪啪999亚洲精品| ga∨成人网| 国内自拍中文字幕| 欧美三级电影网站| 欧美国产美女| 又黄又www| 国产精品极品在线观看| av二区在线| 久久久久久亚洲精品不卡4k岛国 | 国产精品国产自产拍高清av水多| 国产美女情趣调教h一区二区| 亚洲bt天天射| 亚洲激情校园春色| 久久99精品久久久久久欧洲站| 99爱视频在线| 欧美电影在线观看网站| 国产在线一区二区三区| 亚洲国产视频网站| 天天综合精品| 国产视频第一区| 精品在线不卡| 91精品国产综合久久久久久| 国产一区二区三区成人欧美日韩在线观看 | 精品理论电影| 亚洲澳门在线| 视频精品国内| 你懂的免费在线观看| 欧美日韩视频免费| 国产69精品久久久久9| 成人美女视频在线看| 四季久久免费一区二区三区四区| 在线日韩av永久免费观看| 日韩美女av在线| 亚洲男女一区二区三区| 日韩中文字幕91| 欧美丝袜丝交足nylons172| 国产麻豆一区二区三区| 91午夜在线| 妺妺窝人体色www看人体| 欧美国产第二页| 亚洲一区二区欧美激情| 国产精品亲子乱子伦xxxx裸| 99精品热视频只有精品10| 岛国av一区| 无码日本精品xxxxxxxxx| 亚洲国产精品一区二区尤物区| 经典一区二区| av在线播放免费| 中文字幕在线亚洲三区| 日韩有码视频在线| 亚洲乱码中文字幕| 亚洲每日在线| 26uuu亚洲电影| 亚洲一级片网站| 1卡2卡3卡精品视频| 精品国产露脸精彩对白| 久久亚洲精精品中文字幕早川悠里| 久久93精品国产91久久综合| 欧美精品videos另类| 国产91porn| 欧美一区深夜视频| 欧美久久免费观看| 久久青草国产手机看片福利盒子| 色婷婷色综合| 成人福利视频| 黄页网站在线观看| 中文字幕日韩一区二区三区不卡| 国产做受69高潮| 欧美日本视频在线| 国产亚洲成av人在线观看导航 | 色呦呦呦在线观看| 国产精品沙发午睡系列| 成人黄色午夜影院| 亚洲系列中文字幕| 欧美香蕉大胸在线视频观看| 国产在线视视频有精品| 精品免费视频| 欧美freesex| 小草av在线播放| 欧美男女爱爱视频| 成人av片网址| 九九热视频这里只有精品| 欧美亚洲国产一区二区三区| 久久久久久影视| 视频一区中文字幕国产| 国产99久久| 国产精品第一国产精品| 国产露出视频在线观看| 成人性做爰aaa片免费看不忠| 欧美大陆一区二区| 国产99久久精品一区二区永久免费 | 欧美日韩一本到| 久久久国产一区二区三区四区小说 | 国产99久久久久久免费看农村| 999久久久国产精品| 久久xxx视频| 黄色一级大片在线免费看产| 91国内精品在线视频| 性一交一乱一伧国产女士spa| 国产伦精品一区二区三区视频孕妇 | 国内精品在线播放| 99国产**精品****| 7777精品| 日本免费久久| 一级毛片视频在线观看| 1069男同网址| 婷婷五月综合缴情在线视频| 欧美中日韩一区二区三区| 国产精品亚洲美女av网站| 美女国内精品自产拍在线播放| 精品欧美一区二区三区精品久久| 午夜精品福利一区二区蜜股av| 久久精品在这里| 国产v日产∨综合v精品视频| 国产精品社区| 欧美一区二区三区久久精品茉莉花| 6080亚洲理论片在线观看| 色8久久影院午夜场| 精品视频在线一区二区| 日本韩国一区| 国产污污在线观看| 调教视频vk| 美女一区二区三区视频| 日日碰狠狠添天天爽超碰97| 久久亚洲a v| 欧美视频在线观看视频| 亚洲乱码日产精品bd在线观看| 一区二区三区在线视频看|