OOP和MVC區別
一個思想 一個模式 (模式是凌駕於面向物件之上的一種存在)
OOP是面向物件程式設計 MVC是實現系統所選擇的一種系統架構。
不使用MVC也一樣可以實現系統的。 不使用OOP也一樣可以程式設計。
與MVC相比,面向物件是微觀的,而設計模式是更加巨集觀的一種概念。兩者並不是一種型別的東西。
OOP
面向物件程式設計(Object Oriented Programming,OOP,面向物件程式設計)是一種計算機程式設計架構。OOP 的一條基本原則是計算機程式是由單個能夠起到子程式作用的單元或物件組合而成。OOP 達到了軟體工程的三個主要目標:重用性、靈活性和擴充套件性。為了實現整體運算,每個物件都能夠接收資訊、處理資料和向其它物件傳送資訊。OOP 主要有以下的概念和元件:
元件 - 資料和功能一起在執行著的計算機程式中形成的單元,元件在 OOP 計算機程式中是模組和結構化的基礎。
抽象性 - 程式有能力忽略正在處理中資訊的某些方面,即對資訊主要方面關注的能力。
封裝 - 也叫做資訊封裝:確保元件不會以不可預期的方式改變其它元件的內部狀態;只有在那些提供了內部狀態改變方法的元件中,才可以訪問其內部狀態。每類元件都提供了一個與其它元件聯絡的介面,並規定了其它元件進行呼叫的方法。
多型性 - 元件的引用和類集會涉及到其它許多不同型別的元件,而且引用元件所產生的結果得依據實際呼叫的型別。
繼承性 - 允許在現存的元件基礎上建立子類元件,這統一併增強了多型性和封裝性。典型地來說就是用類來對元件進行分組,而且還可以定義新類為現存的類的擴充套件,這樣就可以將類組織成樹形或網狀結構,這體現了動作的通用性。
由於抽象性、封裝性、重用性以及便於使用等方面的原因,以元件為基礎的程式設計在指令碼語言中已經變得特別流行。
MVC
MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型(M)、檢視(V)、控制器(C),它們各自處理自己的任務。
檢視 :檢視是使用者看到並與之互動的介面。對老式的Web應用程式來說,檢視就是由HTML元素組成的介面,在新式的Web應用程式中,HTML依舊在檢視中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Adobe Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services。如何處理應用程式的介面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程式處理很多不同的檢視。在檢視中其實沒有真正的處理髮生,不管這些資料是聯機儲存的還是一個僱員列表,作為檢視來講,它只是作為一種輸出資料並允許使用者操縱的方式。
模型 :模型表示企業資料和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusion Components這樣的構件物件來處理資料庫。被模型返回的資料是中立的,就是說模型與資料格式無關,這樣一個模型能為多個檢視提供資料。由於應用於模型的程式碼只需寫一次就可以被多個檢視重用,所以減少了程式碼的重複性。
控制器 :控制器接受使用者的輸入並呼叫模型和檢視去完成使用者的需求。所以當單擊Web頁面中的超連結和傳送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定呼叫哪個模型構件去處理請求,然後確定用哪個檢視來顯示模型處理返回的資料。
現在我們總結MVC的處理過程,首先控制器接收使用者的請求,並決定應該呼叫哪個模型來進行處理,然後模型用業務邏輯來處理使用者的請求並返回資料,最後控制器用相應的檢視格式化模型返回的資料,並通過表示層呈現給使用者。