mvc:ide開發環境開發時,無意中使用的軟體結構.
**於wikipedia:
軟體的層次劃分:框架——元件(設計模式)——演算法與資料結構.
模型(model)「資料模型」(model)用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法。「模型」有對資料直接訪問的權力,例如對資料庫的訪問。「模型」不依賴「檢視」和「控制器」,也就是說,模型不關心它會被如何顯示或是如何被操作。但是模型中資料的變化一般會通過一種重新整理機制被公布。為了實現這種機制,那些用於監視此模型的檢視必須事先在此模型上註冊,從而,檢視可以了解在資料模型上發生的改變。(比較:觀察者模式(軟體設計模式))
檢視(view)檢視層能夠實現資料有目的的顯示(理論上,這不是必需的)。在檢視中一般沒有程式上的邏輯。為了實現檢視上的重新整理功能,檢視需要訪問它監視的資料模型(model),因此應該事先在被它監視的資料那裡註冊。
控制器(controller)控制器起到不同層面間的組織作用,用於控制應用程式的流程。它處理事件並作出響應。「事件」包括使用者的行為和資料模型上的改變。
在最初的jsp網頁中,像資料庫查詢語句這樣的資料層**和像html這樣的表示層**混在一起。經驗比較豐富的開發者會將資料從表示層分離開來,但這通常不是很容易做到的,它需要精心地計畫和不斷的嘗試。mvc從根本上強制性地將它們分開。儘管構造mvc應用程式需要一些額外的工作,但是它帶給我們的好處是毋庸置疑的。
首先,多個檢視能共享乙個模型。如今,同乙個web應用程式會提供多種使用者介面,例如使用者希望既能夠通過瀏覽器來收發電子郵件,還希望通過手機來訪問電子郵箱,這就要求web**同時能提供internet介面和wap介面。在mvc設計模式中,模型響應使用者請求並返回響應資料,檢視負責格式化資料並把它們呈現給使用者,業務邏輯和表示層分離,同乙個模型可以被不同的檢視重用,所以大大提高了**的可重用性。
其次,控制器是自包含(self-contained)指高獨立內聚的物件,與模型和檢視保持相對獨立,所以可以方便的改變應用程式的資料層和業務規則。例如,把資料庫從mysql移植到oracle,或者把rdbms資料來源改變成ldap資料來源,只需改變模型即可。一旦正確地實現了控制器,不管資料來自資料庫還是ldap伺服器,檢視都會正確地顯示它們。由於mvc模式的三個模組相互獨立,改變其中乙個不會影響其他兩個,所以依據這種設計思想能構造良好的少互擾性的構件。
此外,控制器提高了應用程式的靈活性和可配置性。控制器可以用來連線不同的模型和檢視去完成使用者的需求,也可以構造應用程式提供強有力的手段。給定一些可重用的模型和檢視,控制器可以根據使用者的需求選擇適當的模型進行處理,然後選擇適當的的檢視將處理結果顯示給使用者。
mvc模式的缺點是由於它沒有明確的定義,所以完全理解mvc模式並不是很容易。使用mvc模式需要精心的計畫,由於它的內部原理比較複雜,所以需要花費一些時間去思考。開發乙個mvc模式架構的工程,將不得不花費相當可觀的時間去考慮如何將mvc模式運用到應用程式中,同時由於模型和檢視要嚴格的分離,這樣也給除錯應用程式帶來了一定的困難。每個構件在使用之前都需要經過徹底的測試。另外由於mvc模式將乙個應用程式分成了三個部件,所以這意味著同乙個工程將包含比以前更多的檔案。
過去mvc模式並不適合小型甚至中等規模的應用程式,這樣會帶來額外的工作量,增加應用的複雜性。但現在多數軟體設計框架,能直接快速提供mvc骨架,供中小型應用程式開發,此問題不再存在。對於開發存在大量使用者介面,並且邏輯複雜的大型應用程式,mvc將會使軟體在健壯性、**重用和結構方面上乙個新的台階。儘管在最初構建mvc模式框架時會花費一定的工作量,但從長遠的角度來看,它會大大提高後期軟體開發的效率。
由於mfc之下的document/view定義過於模糊,未將controller(messagemap)部份取出,因此controller可以置入view或document,但不管置入哪一方面,都會與view或document綁死,沒有彈性。
controller(messagemap)對於qt未必能自由控制,一般由語法規則控制,在這個節點上說其是不太人性化。
python 有許多的 mvc 架構。最常用的有django 和turbogears。
大型軟體開發與ORM構架
在最近的幾年裡,很多程式設計師把自己的業餘時間獻給了orm框架的開發,甚至在有些單位的招聘面試中把是否理解或是能否使用一種orm構架,作為了一種評價開發人員技能的必要條件。作為乙個一線的開發工人,我毫不否認orm框架對設計模式社群發展作出巨大的貢獻,以及對提高開發效率這一目標的成果。在下面的文章中我...
自上而下的軟體開發和自下而上的軟體開發
自上而下 top down 開發模式是指從乙個應用的最高點開始開發。從最高點逐步往下層編碼,直到開發完所有的任務。一旦寫完了最下層的 開發任務就完成了。使用這種方式,你需要設計 編寫出所有你需要的但還沒有實現模擬介面 服務 偽 自下而上 bottom up 開發模式是指從乙個應用的最底層開始開發。這...
python軟體開發目錄 軟體開發目錄規範
為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要。軟體的目錄規範並無硬性標準,只要清晰可讀即可,假設你的軟體名為foo,筆者推薦目錄結構如下 foo core 存放業務邏輯相關 core.py api 存放介面檔案,介面主要用於為業務邏輯提供資料操作。ap...