M=Model, 負責資料儲存
V=View, 負責資料的呈現,例如網頁。
C=Control, 負責程式的邏輯控制
定義好framework的話則可將一些程式實作上的細節給隱藏起來(encapsulate)加以抽象化,再降低程式之間的隅合程度。
再以資料庫查詢應用為例,使用 MVC 而未使用 framework 之前,我們會用 sample1.php 的寫法。
接著,假設我們使用了某個名為 "MyCommonApp" 的 framework 之後,按該 framework 的預先建置內容,我們改成 sample2.php 的寫法。
sample1.php 和 sample2.php 兩種寫法的差異,一眼可見資料庫連線的動作被隱蔽了,而且也不需要用全域變數 (global) $dbh , $dbh 變成了個體成員 $this->dbh 。更進一步,被隱蔽的部份可以加以抽象化,如 MyCommonApp 可能會支援多種資料庫系統,或是支援不同的資料庫連接層 (DBA, MDB2 等) 。但這些細節皆被 framework 隱蔽起來, programmer 只需要專注 class FooApp 的內容即可。還有一件事要提,上述內容沒有 View 和 Control 的程式碼,因為根本不需要知道。 View 只管呈現陣列 ($fooSet) 的內容,不管是 sample1.php 或是 sample2.php ,只要 Model 丟出來的是個陣列, View 就不用作任何修改。這也是 MVC 架構所帶來的好處:低耦合度,各項工作間彼此獨立,其中一個項目的修改動作不會連帶要修改其他項目。在 team-work 中也意味著三種設計工作可以交由三個人同時進行。
沒有留言:
張貼留言