關於軟體架構設計的一些思考--通用架構設計模式

來源:互聯網
上載者:User

標籤:strong   代碼   on   c   r   設計   對象   tt   如何   

最近在著手設計一個服務發布,治理的架構,參考了幾個主流架構的代碼,比如阿里的Dubbo,傳輸層的Netty,容器層的Tomcat等等,有一些體會。


經典的《物件導向分析與設計》一書中闡述了為什麼設計是按層次劃分的,種種好處自己去翻書,總結這麼多架構,有一些架構設計的基本模式可以抓住。

通用的設計,尤其是大型的架構可以分為4層:介面層,抽象層,流程實現與適配層,具體實現層


介面層定義了整個架構所具備的功能,最好都用介面實現,不要用抽象類別。介面的擴充性優於抽象類別。Thrift採用了抽象類別來設計頂層的功能,後期想擴充其實挺難的。

關於介面層的設計有一些要點:

1. 介面的粒度要小,參考單一職責原則

2. 用一個較大的介面適配多個小介面,而不要設計一個大介面。小介面的擴充性優於大介面

3. 介面的設計只需要考慮要具備的功能,不需要考慮類的屬性,如何?等等,這些在抽象層和實現層擴充


抽象層定義了實現介面的抽象類別,都用抽象類別實現,主要的功能有:

1. 給介面提供預設實現

2. 提供新的抽象方法擴充介面

3. 給子類提供公用的屬性,方法

4. 比如定義調用的基本流程,這個在設計大型架構,底層採用第三方實現的時候尤其重要。參考模板模式


流程實現與適配層,這層採用普通類實現,繼承抽象層,主要的功能有:

1. 實現抽象層和介面層定義的抽象方法

2. 定義架構調用的具體流程

3. 如果底層採用第三方架構,那麼需要做適配和裝飾層,參考適配器模式和裝飾器模式


具體實現層,這層採用普通類實現,主要是實現具體的功能,但是不要參與到架構調用的流程


這個4層結構是一個可擴充的,健壯的設計,介面層定義功能,抽象層和流程實現與適配層定義了架構調用的流程,具體實現層是可插拔的,可以採用多種實現。


實際的設計可以根據架構要實現的功能進行裁剪,比如不會有多種實現,就可以把3,4層合并。如果是像Dubbo這種底層支援多種傳輸層和協議層的架構,就需要完整的4層結構,並且需要好好設計抽象層和流程層,因為架構具體的流轉是在這兩層,只是涉及到底層時,才會調用具體的第三方實現。








關於軟體架構設計的一些思考--通用架構設計模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.