爲什麼MVC不是一種設計模式

參考文章:
http://baike.baidu.com/link?url=sZR2KvyH81Yk4S93ZCNbUxpwO_ip97gYPYQIVvVk7KF7A0eoCYhHP0VimApxYt4k_6_gvV91ELk-Dnu4vJnE_9sgqlBvEcz33yJjS_DQiMO28V4apP_JZyQDBcSVp5zC33oFT8TXZ91DxphQyroaA_
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
有很多程序員往往把框架模式和設計模式混淆,認爲MVC是一種設計模式。實際上它們完全是不同的概念。
框架、設計模式這兩個概念總容易被混淆,其實它們之間還是有區別的。框架通常是代碼重用,而設計模式是設計重用,架構則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即爲專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性。
框架與設計模式雖然相似,但卻有着根本的不同。設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或複用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,框架是軟件,而設計模式是軟件的知識。
引用一段話
GoF (Gang of Four,四人組, 《Design Patterns: Elements of Reusable Object-Oriented Software》/《設計模式》一書的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)並沒有把MVC提及爲一種設計模式,而是把它當做“一組用於構建用戶界面的類集合”。在他們看來,它其實是其它三個經典的設計模式的演變:觀察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和組合模式(Composite)。根據MVC在框架中的實現不同可能還會用到工廠模式(Factory)和裝飾器(Decorator)模式。我在另一本免費的書“JavaScript Design Patterns For Beginners”中講述了這些模式,如果你有興趣可以閱讀更多信息。正如我們所討論的,models表示應用的數據,而views處理屏幕上展現給用戶的內容。爲此,MVC在覈心通訊上基於推送/訂閱模型(驚訝的是 在很多關於MVC的文章中並沒有提及到)。當一個model變化時它對應用其它模塊發出更新通(“publishes”),訂閱者 (subscriber)——通常是一個Controller,然後更新對應的view。觀察者——這種自然的觀察關係促進了多個view關聯到同一個 model。對於感興趣的開發人員想更多的瞭解解耦性的MVC(根據不同的實現),這種模式的目標之一就是在一個主題和它的觀察者之間建立一對多的關係。當這個 主題改變的時候,它的觀察者也會得到更新。Viewscontrollers的關係稍微有點不同。Controllers幫助views對不同用戶的輸 入做不同的響應,是一個非常好的策略模式列子。
介紹一篇好文章:http://www.cnblogs.com/aaronjs/p/3581904.html
發佈了16 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章