mvc設計模式和mvc框架的區別

一組概念需要先理解,因為后面需要用:

? 架構:簡單的說架構就是一個藍圖,是一種設計方案,將客戶的不同需求抽象成為抽象組件,并且能夠描述這些抽象組件之間的通信和調用。

? 框架:軟件框架是項目軟件開發過程中提取特定領域軟件的共性部分形成的體系結構,不同領域的軟件項目有著不同的框架類型。框架不是現成可用的應用系     統。而是一個半成品,提供了諸多服務,開發人員進行二次開發,實現具體功能的應用系統。

? 設計模式:是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結,它強調的是一個設計問題的解決方法。

?

首先來說說MVC設計模型:

1.定義:MVC 設計模型是一種使用 Model View Controller( 模型-視圖-控制器)設計創建 Web 應用程序的模式。

  由上主謂賓可以很容易看出,mvc模型是一種用來寫web應用程序的樣式,也就是說只能寫web不能寫其它?

2.既然使用了 Model View Controller( 模型-視圖-控制器),那么就很有必要來介紹一下該(模型-視圖-控制器)到底是怎樣的一個東西?

?

Model(模型):是應用程序中用于處理應用程序數據邏輯的部分。

    通常模型對象負責在數據庫中存取數據。

?

View(視圖):是應用程序中處理數據顯示的部分。
    通常視圖是依據模型數據創建的。

?

Controller(控制器):是應用程序中處理用戶交互的部分。
    通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。

?

再來說說MVC框架:

1.MVC框架,它強制性的使應用程序輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。

  由上可知,要使用MVC框架,則一定要遵守該框架的規則,它有它的強制性所在。聰明的讀者一看就知道,它所使用的三個核心部件其實都是來自MVC模型。

  只不過在框架中讓他們彼此更加獨立了去處理各自的任務而已。

2.最典型的MVC就是JSP +?servlet?+?javabean的模式。

3. 視圖:視圖是用戶看到并與之交互的界面。視圖主要有元素HTML?,Adobe Flash,XHTML,XML/XSL,WML等一些標識語言和Web services。

模型:模型表示企業數據和業務規則。

控制器:控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求,所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。

?

?

設計模型和框架的區別:(注意這里首先討論的是總概念!)

先來看看網上給的區別,來自百度百科的:

在軟件生產中有三種級別的重用:內部重用(即在同一應用中能公共使用的抽象塊),代碼重用(即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用),應用框架的重用(即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性)。

框架通常是代碼重用,而設計模式是設計重用(?設計重用怎么來的?上下都沒它的定義,百科垃圾就在這里。),架構則介于兩者之間。

設計模式是對在某種環境中反復出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用于各種應用。可以 說,框架是軟件,而設計模式是軟件的知識。

百科的回答往往缺乏嚴謹,我在MBR lib網站中看到它們將軟件重用分類為:產品重用/知識重用/環境重用

框架是代碼重用,所以我們在使用框架的時候總是引入很多包。

框架是軟件,而設計模式是軟件的“知識”。所以模式是框架的基礎。

?

再回到MVC這個小概念上來:

根據框架和設計模式的大概念,我們應該可以知道MVC框架和MVC設計模式區別的一二了。

以我的理解,覺得MVC設計模式更像設計師手中的圖紙(圖紙上的東西往往更抽象),而MVC框架則更像是工程師以設計師的圖紙而建造的產品!

最終的產品也許比設計師原來的圖紙有所出入,有些功能有所增強,有些又會適當的減弱,以此來更加適應大眾的需求和體驗!但是在整體上和本質上都是遵循設計師的構造的。

MVC設計模式就像建設房子的基礎(地基設計+結構設計+強弱電設計+消防設計+etc),而MVC框架則可在此基礎上根據需求構建的漂亮的成品房。

?

常見的框架和設計模型(注意這是大概念)

?

設計模式有哪些?

?MVC、MTV、MVP、CBD、ORM等等;

?

框架有哪些?

?C++語言的QT、MFC、gtk

Java語言的SSH?、SSI

php語言的 smarty(MVC模式)

python語言的django(MTV模式)等等

轉載于:https://my.oschina.net/wf1994/blog/686370

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新型基礎測繪與實景三維中國建設技術文件【4】基礎地理實體數據元數據

基礎地理實體數據是新型基礎測繪產品體系中的核心成果,為實現該數據的規范化管理和使用,編制基礎地理實體數據元數據技術文件。本文件規定了基礎地理實體數據元數據的基本要求和元數據內容,適用于二維表達形式、三維表達形式基礎地理實體數據…

思科三層交換機充當路由器實現全網互通

轉載于:https://blog.51cto.com/13568840/2059797

劍指offer編程題Java實現——面試題3二維數組中的查找

題目描述 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。下面是我實現的代碼,修改下類名(…

mpvue開發小程序分享朋友圈無法自定義標題解決方法

在node_modules里面找到mpvue,手動修改一下mpvue這個包下的index.js文件 // 用戶點擊右上角分享 到朋友圈 onShareTimeline: rootVueVM.$options.onShareTimeline? function (options) { return callHook$1(rootVueVM, onShareTimeline, options); } : null,找到 L…

【ArcGIS Pro微課1000例】0020:ArcGIS Pro中河流(曲線)、湖泊(水體色)圖例制作案例教程

相關閱讀:【ArcGIS微課1000例】0032:ArcGIS中河流(曲線)、湖泊(水體色)圖例制作案例教程 河流、湖泊的樣式設置功能在ArcGIS Pro得到了延續,本文講解ArcGIS Pro中河流湖泊圖例的設置方法。 《ArcGIS Pro從入門到精通系列精品教程(微課版)》專欄包括完整的實驗數據包,…

swift學習選pizza項目

2019獨角獸企業重金招聘Python工程師標準>>> 原文: https://makeapppie.com/2014/09/18/swift-swift-implementing-picker-views/ 效果: 步驟: 新建iOS single view application 名字為SwiftPickerViewPizzaDemo, 打開main storyboard選中view controoler, 右上角, …

Windows 11 新版 25163 推送!任務欄全新菜單、應用商店更新、文件資源管理器大量修復...

面向 Dev 頻道的 Windows 預覽體驗成員,微軟現已推送 Windows 11 預覽版 Build 25163。主要變化1.微軟宣布為 Windows 11 任務欄引入全新溢出體驗,當任務欄上的應用程序圖標或窗口達到任務欄容量上限時,將啟用全新溢出菜單。2.微軟更新了 Mic…

shell中source與sh區別

shell中使用source conf.sh,是直接運行conf.sh的命令,不創建子shell,類似與html中include,而sh是則創建子shell,子shell里面 的變量父shell無法使用,對環境變量的修改也不影響父shell。父shell中的局部變量…

[轉]Web3 是去中心化的“騙局”?

作者 | InvisibleUp 譯者 | 彎月 出品 | CSDN(ID:CSDNnews) Web3 不是去中心化。 雖然我覺得這一點很明顯,根本不需要通過一篇文章來說明,但我也是迫不得已,因為突然之間各大科技巨頭,比如 Redd…

實景三維建設背景下,三維GIS面臨哪些挑戰?

2021年8月26日,自然資源部印發《實景三維中國建設技術大綱(2021版)》,明確指出“實景三維中國建設是落實數字中國、平安中國、數字經濟戰略的重要舉措,是落實國家新型基礎設施建設的具體部署,是服務生態文明…

無需編碼,自動實現“異步 Request-Reply”模式

前言上次,我們雖然用代碼實現了“異步 Request-Reply 模式”,但是需要為每一個長時間操作 API 實現一個對應的 AsyncXXX 操作。其實,可以嘗試用 Source Generators 減少這種重復性勞動。實現思路Controller 類必須是partial,這樣才能為它額外…

Kotlin Weekly 中文周報

Kotlin Weekly 中文周報 —— 25 Kotlin 開發中文周報 文章 使用 Kotlin 中的 takeIf (zhuanlan.zhihu.com) 在 Kotlin 的標準函數中有個 takeIf 函數,你是否了解這個函數呢?它是否只是漂亮點的 if 語句呢? Kotlin 的…

第一次玩,試試手(標題)

Hello Blog!!轉載于:https://blog.51cto.com/10999994/1786094

【CASS精品教程】CASS9.1生成標準圖幅案例教程

在CASS中,可以很方便的生成標準圖幅,如50*50。本文演示cass中,根據測區范圍標準圖幅生成過程。 一、圖幅預覽: 二、圖幅生成 打開測區范圍,如下圖所示: 點擊【繪圖處理】→【批量分幅】→【格網建立】,如下圖所示: 選擇比例尺500,直接回車。 選擇圖幅50*50。 根據測區…

[轉]mpvue中的小程序調用系統自帶查看圖片的功能

mpvue中的小程序調用系統自帶查看圖片的功能 這里舉個栗子&#xff1a; <template><div class"keting"><div class"centsimg dja"><swiper:current"curr"display-multiple-items"1"next-margin"0rpx"c…

隱馬爾科夫

前向、后向算法解決的是一個評估問題&#xff0c;即給定一個模型&#xff0c;求某特定觀測序列的概率&#xff0c;用于評估該序列最匹配的模型。Baum-Welch算法解決的是一個模型訓練問題&#xff0c;即參數估計&#xff0c;是一種無監督的訓練方法&#xff0c;主要通過EM迭代實…

去創業公司不能有一夜暴富的僥幸,更不能指望掉餡餅

為了實現財務自由&#xff0c;去創業公司是一個不錯的選項&#xff0c;我自己也去過創業公司&#xff0c;身邊的朋友也有不少去過或正在創業公司里干&#xff0c;我就結合下我經歷過的和我看到的&#xff0c;說下我的感受。 1 該去哪種類型的創業公司 第一&#xff0c;這個公司…

分布式日志收集系統 - ExceptionLess的安裝、配置、使用

前言Exceptionless 是一個開源的實時的日志收集框架&#xff0c;它可以應用在基于 ASP.NET&#xff0c;ASP.NET Core&#xff0c;Web API&#xff0c;Web Forms&#xff0c;WPF&#xff0c;Console&#xff0c;ASP.NET MVC 等技術開發的應用程序中&#xff0c;并且提供了REST接…

[轉]使用npm發布vue組件

&#x1f636; NPM 是隨同 NodeJS 一起安裝的 javascript 包管理工具&#xff0c;能解決 NodeJS 代碼部署上的很多問題 發布前的準備 注冊一個 npm 賬號 前往 NPM 官網進行注冊 初始化項目 這里用的是webpack-simple,可以理解為精簡版的vue-cli。 如果沒有全局安裝 vue 的話&am…

[置頂]tcpflow 抓包

轉自&#xff1a; http://www.rwifeng.com/jekyll/update/2015/04/16/how-to-tcpflow/ tcpflow 抓包 Apr 16, 2015 大家都知道 tcpdump 是一個很方便的抓包工具&#xff0c; 但是 tcpdump 是以包為單位進行輸出的&#xff0c;閱讀起來不是很方便。 而 tcpflow 是面向 TCP 流的…