10個常見的軟件架構(gòu)模式
點擊上方藍色“小哈學(xué)Java”,選擇“設(shè)為星標”
回復(fù)“資源”獲取獨家整理的學(xué)習(xí)資料!




-? ? ?什么是架構(gòu)模式? ? ?-
架構(gòu)模式是在給定上下文中解決軟件架構(gòu)中常見問題的通用、可重用的解決方案。架構(gòu)模式類似于軟件設(shè)計模式,但范圍更廣。

-? ? ?分層模式? ? ?-
一般信息系統(tǒng)中最常見的4層劃分如下:
Presentation layer?表示層(也就是UI層) Application layer 應(yīng)用層(也就是服務(wù)層) Business logic layer 業(yè)務(wù)邏輯層(也就是領(lǐng)域?qū)樱?/span> Data access layer 數(shù)據(jù)訪問層(也就是數(shù)據(jù)持久層)
應(yīng)用
一般桌面應(yīng)用程序 電子商務(wù)Web應(yīng)用程序


-? ? ?客戶端-服務(wù)器模式? ? ?-
應(yīng)用
在線應(yīng)用程序,如電子郵件、文件共享和銀行業(yè)務(wù)等


-? ? ?主從模式? ? ?-
在數(shù)據(jù)庫復(fù)制中,主數(shù)據(jù)庫被視作權(quán)威數(shù)據(jù)源,而從數(shù)據(jù)庫與其保持同步 連接到計算機系統(tǒng)總線上的外圍設(shè)備(主驅(qū)動器和從驅(qū)動器)


-? ? ?管道過濾模式? ? ?-
應(yīng)用
編譯器。依次使用不同的過濾器執(zhí)行詞法分析、解析、語法分析和代碼生成 生物信息學(xué)中的工作流程


-? ? ?Broker模式? ? ?-
服務(wù)器將它們的功能(服務(wù)和特征等)發(fā)布到代理,客戶端向代理請求服務(wù),然后代理根據(jù)其注冊表將客戶端請求轉(zhuǎn)發(fā)給合適的服務(wù)。
應(yīng)用
消息代理軟件,如?Apache ActiveMQ,?Apache Kafka,?RabbitMQ?和?JBoss Messaging.


-? ? ?P2P模式? ? ?-
應(yīng)用
文件共享網(wǎng)絡(luò),如Gnutella?和?G2 多媒體協(xié)議,如P2PTV?和?PDTP 基于加密貨幣的產(chǎn)品,如比特幣和區(qū)塊鏈


-? ? ?事物總線模式? ? ?-
應(yīng)用
安卓開發(fā) 通知服務(wù)


-? ? ?MVC模式? ? ?-
模型——包含核心功能和數(shù)據(jù) 視圖——向用戶顯示信息(可以定義多個視圖) 控制器——處理用戶的輸入
應(yīng)用
主流編程語言的互聯(lián)網(wǎng)應(yīng)用架構(gòu) 網(wǎng)絡(luò)框架,如Django?和?Rails.


-? ? ?黑板模式? ? ?-
黑板—— 一個結(jié)構(gòu)化的全局內(nèi)存,包含解決方案領(lǐng)域的對象 知識源——具有自身含義的專業(yè)模塊 控制組件——選擇、配置和執(zhí)行模塊
應(yīng)用
語音識別 車輛識別與跟蹤 蛋白質(zhì)結(jié)構(gòu)鑒定 聲吶信號解釋


-? ? ?解釋器模式? ? ?-
應(yīng)用
數(shù)據(jù)庫查詢語言,如SQL 用于描述通信協(xié)議的語言


-? ? ?架構(gòu)模式對比? ? ?-
| 模式 | 優(yōu)點 | 缺點 |
分層結(jié)果更容易進行標準化,因為可以清晰地定義每個層級 層級內(nèi)的修改不會影響其它層 | 某些場景下,需要跳過其中一些分層 | |
因為不同客戶端有不同形式,進程間通信會造成很大負載 | ||
主從模塊間的通信延遲可能是一個問題,尤其在實時系統(tǒng)中。 | ||
容易添加過濾器,系統(tǒng)很容易擴展; 過濾器可重用,可以通過重新組合已有的過濾器來創(chuàng)建不同的管道流。 | 從一個過濾器傳遞到另一個時,存在數(shù)據(jù)轉(zhuǎn)換的負載 | |
對任意節(jié)點的失敗都有高度穩(wěn)定性; 在資源和計算能力方面具有高度可伸縮性 | 很難保證安全; 性能取決于節(jié)點的數(shù)量 | |
對于高度分布式應(yīng)用很有效 | ||
很容易擴展數(shù)據(jù)空間中的結(jié)構(gòu) | 可能需要同步機制和訪問控制 | |
有利于終端用戶的可編程性; 增強了靈活性,因為替換一個解釋程序很容易 |
END
有熱門推薦?
1.?面試官:為什么 HashMap 的加載因子是0.75?
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)
評論
圖片
表情

