MVC簡介
簡介
MVC是一種程式設計的模式,MVC是Model-View-Controller的簡寫,中譯是「模型-視圖-控制器」。這三種代表不同的角色與工作:
-
Model(模型):負責處理"資料(Data)"。不論是儲存資料、修改與接收資料。這些資料的通常放在資料庫中。一個良好的Model物件需要封裝應用程式的所需要的資料,和基本的行為,讓它們具備易用與重用性,而且與使用者操作介面或展現層(View物件)之間沒有明確的連繫。
-
View(視圖):負責處理"顯示(Display)"。即所謂的應用程式的呈現層(presentation),將應用程式的資訊依照需求,經過格式化後呈現給使用者。
- Controller(控制器):負責處理"任務(Task)"。Controller扮演了Model和View的中介者,它可以連繫這兩者。Controller專責接收了來自客戶端的請求,呼叫對應的Model物件,然後把資料送給對應要呈現的View。
影片介紹
Andrew Eddie
MVC類別的種類
Joomla!系統設計了三個用於擴充套件開發的MVC基礎類別,分別是JModelLegacy、JViewLegacy與JControllerLegacy,再從這三個類別延伸出專用於不同應用的類別。
Legacy
這個字詞是有遺留的意思,這樣取名的意思是要與2.5版本向下相容。將會與之後新版本中重新設計的MVC類別作一個區分。
Model 模型
模型在Joomla類別中是最多種類的,類別的定義程式檔案位於\libraries\legacy\model\目錄中。最基礎的類是:
- JModelLegacy:基礎類別
以下三個是繼承自JModelLegacy,分別針對使用需求延申的類別。
- JModelForm:編輯/新增項目時,或有需要填表單的功能時使用。
- JModelList:多個項目列表時使用。
- JModelItem:單一項目顯示時使用,有時也會直接使用JModelLegacy。
具有載入XML定義檔中表單欄位定義的除了JModelForm外,還有一個JModelAdmin,它是繼承自JModelForm,是一個更進階的類,用於管理單一項目,通常在後台管理區的元件功能裡,都是直接繼承它來作單一項目的管理。
- JModelAdmin:後台管理區針對單一項目編輯與管理功能時使用。較JModelForm多了權限控管與批次管理的功能。
JModelList雖然是針對多個項目的列表管理使用,但對多個項目的批次處理工作,例如一次刪除多個項目、發佈/停止發佈多個項目,這是交給的單一項目的模型類別處理,而不是在在這個類別裡處理。
你可能會看到JModel或JModelBase,它們並不是設計給擴充套件開發者使用的,它們是用於定義的抽象類別,也沒有提供什麼預設的功能。
View 視圖
視圖在Joomla!中就只有三種,最常用是,其中最基礎的類是:
- JViewLegacy
以下兩種是JViewLegacy的子類別,都是特定情況下才會使用的:
- JViewCategory
- JViewCategoryfeed
Controller 控制器
控制器在Joomla!中就只有三種,最常用是,其中最基礎的類是:
- JControllerLegacy
下面這兩個是延申類別
- JControllerAdmin:管理多個項目
- JControllerForm:表單用途,管理單一項目
小結
MVC總結
- MVC架構區分Model, View, Controller三種不同負責工作的程式區域
- MVC架構是為了容易維護和擴充程式
- 與使用者互動的是Controller
- Model與View彼此的對應要靠Controller來連繫
- 實際上開發時由程式設計師區分出MVC的程式碼工作
命名
在元件開發過程中,有三種的命名在實際使用時,會有互相參照的情況,所以要特別注意:
- 檔案的名稱
- 類別的名稱
- 方法的名稱
其他重要的類
-
JTable類別:它是一個Active Record設計模式的產物,具有對單一資料庫作CRUD的能力。通常會出現在Model中。
-
JDatabase:這是Joomla!中連接資料庫的類別,和資料庫處理的大小事都是靠它來作。你可以透過Joomla!中的工廠JFactory來得到它(注意:不是建立它)
- Form Field:在Joomla! 2.5後中新增了JForm類別,專司處理網頁中表單欄位,開發者可以透過xml的設定來建立各式的表單欄位。這些表單欄位可以藉由這些類別,得到存取CMS中的資料、客戶端或伺服器端驗証等等的能力。