主流MVC架構的設計模式及遵守的軟體設計原則

來源:互聯網
上載者:User

標籤:ssh   設計模式   mvc   

原文地址,會不斷更新  http://it.zuocheng.net/mvc-design-pattern-design-principle-summary   作程的技術部落格

本文以主流的MVC架構為例,比如Java 的SSH、PHP的Symfony和Zend Framework ,在簡單地剖析他們的設計原理之後,找到其中使用的設計模式;鑒賞他們的代碼實現,查看設計者們都遵守了哪些軟體設計原則。作此文,一為學習,二為總結。其中下面所寫內容可能並不全面,也可能不準確,但會不斷修改完善。

架構模式MVC 模式
  • y = f (x)
  • View = Controller (Model, Request)
Active Record 模式
  • Yii Active Record
  • Ruby on Rails Active Record
ORM 模式
  • PHP 的 Doctorine
  • Java 的 Hibernate
三/四層架構,3/4-TIER ARCHITECTURE
  • MVC 架構會借鑒三/四層架構的分層思想,對整個系統進行分層,最常見的是在 Model 層中再細分層次。
  • SSH 的 DAO/JavaBean、Service、Response 等
  • Symfony 2 的 Doctrine、Service、view 等
設計模式的使用複合模式,Compound Pattern
  • MVC架構如果不使用複合模式,本文也沒有任何意義了
單例模式,Singleton Pattern
  • Controller 、 Context、 View 等架構核心類使用了單例模式
多例模式,Multition Pattern
  • 各類資源集區、進程池、線程池(PHP 的後面兩個用不上)
策略模式,Strategy Pattern代理模式,Proxy Pattern
  • 抽象類別的使用
原廠模式,Factory Methond Pattern

Action 對象的建立

抽象原廠模式,Abstract Factory Pattern
  • ajxaAction 、 WebAction 、 APIAction 以及 ajax和web組合的Action 或者 ajax和API組合的Action,複雜的架構會使用抽象原廠模式
門面模式,Facade Pattern

Logger 類,將第三方開源Logger類封裝統一介面,將第三方 Logger 繁冗介面屏蔽

Adapter Pattern
  • Zend Framework 的 Zend_Db_Adapter 類,將具體不同的資料庫(Mysql、Oracle、SQLite)類介面通過Driver類封裝,為上層提供統一介面
  • Zend_Cache 對不同cache的介面的再次封裝
模版模式,Template Method Pattern
  • 各種複雜邏輯的抽象類別
  • 架構的擴充類
建造者模式,Builder Pattern
  • 依賴注入原則的遵守和實踐,將一個複雜的對象的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
  • Content 對象的建立者是 Controller
  • Config 對象的建立
  • ORM 的 Object 對象建立
橋樑模式,Bridge Pattern命令模式,Command Pattern
  • Http 請求的解析就是命令模式
  • Symfony 2 的 Console
  • Symfony 2 的 Command 類
裝飾模式,Decorator Pattern
  • ajxaAction 、 WebAction 、 APIAction 以及 ajax和web組合的Action 或者 ajax和API組合的Action
迭代器模式,Iterator Pattern
  • 路由設定的遍曆
組合模式,Composite Pattern觀察者模式,Observer Pattern
  • 各種 Trigger 類
  • 各類自訂的擴充
責任鏈模式,Chain of Responsibility Pattern
  • 路由的解析,尤其是Restful風格的URL,依據路由表(責任鏈),定位Action 類和方法
訪問者模式,Visitor Pattern狀態模式,State Patter原型模式,Prototype Pattern
  • Action 中,講執行權移交給另外一個 Action ,比如redirect 或者 forward,獲得執行的Action還要和原有Action的屬性、狀態、上下文一致。原型模式是比較好的選擇。
中介者模式,Mediator Pattern
  • 充當中介者的類是 Context,某些架構Context類,為Request、Respose、GlobalConfig 等等單例類進行抽象,為業務代碼提供唯一的調用方式,即Context的類提供的介面
解譯器模式,Interpreter Pattern亨元模式,Flyweight Pattern
  • 通用狀態類
  • 各種 Util 類
  • HTTP meta 類、特殊字元享元歸類
備忘錄模式,Memento Pattern
  • 系統日誌、狀態,以支援復原
  • 資料庫事務
軟體設計原則 SOLID單一職責原則(Simple responsibility pinciple SRP)開-閉原則(Open-Closed Principle, OCP)裡氏代換原則(Liskov Substitution Principle,LSP)迪米特法則(Law of Demeter LoD),最少知識原則(Least Knowledge Principle,LKP)介面隔離原則(Interface Segregation Principle, ISP)依賴倒置原則(Dependence Inversion Principle)
  • 建造者模式的使用
  • 路由表的使用,或其他各種配置都收集到設定檔中,使用依賴注入容器,實現代碼和實現的解耦

主流MVC架構的設計模式及遵守的軟體設計原則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.