總體來說設計模式分為三大類:
創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
其實還有兩類:並發型模式和線程池模式。用一個圖片來整體描述一下:
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)模式
正如我們所討論的,models表示應用的數據,而views處理屏幕上展現給用戶的內容。為此,MVC在核心通訊上基於推送/訂閱模型(驚訝的是 在很多關於MVC的文章中並沒有提及到)。當一個model變化時它對應用其它模塊發出更新通知(“publishes”),訂閱者 (subscriber)——通常是一個Controller,然后更新對應的view。觀察者——這種自然的觀察關系促進了多個view關聯到同一個 model。
對於感興趣的開發人員想更多的了解解耦性的MVC(根據不同的實現),這種模式的目標之一就是在一個主題和它的觀察者之間建立一對多的關系。當這個 主題改變的時候,它的觀察者也會得到更新。Views和controllers的關系稍微有點不同。Controllers幫助views對不同用戶的輸 入做不同的響應,是一個非常好的策略模式列子。