1、什麼是架構模式?
剛作了軟考題,有一道關於提問設計模式是什麼的,設計模式是一套解決相似問題的經驗的總結。採用設計模式的目的是爲了可重用代碼。而架構模式也一個通用的、可重用的解決方案。我以爲他們的區別是,設計模式跟代碼更有直接關係,html
架構模式站在系統全局的角度解決子系統之間的關係、功能需求與非功能的優先級與取捨原則等。數據庫
2、分層模式
(參考https://www.cnblogs.com/IcanFixIt/p/7518146.html)設計模式
這種模式也稱爲多層體系架構模式。它能夠用來構造能夠分解爲子任務組的程序,每一個子任務都處於一個特定的抽象級別。每一個層都爲下一個提供更高層次服務。分層模式的關鍵點在於肯定依賴:即經過分層,能夠限制子系統間的依賴關係,架構
使系統以更鬆散的方式耦合,從而更易於維護。性能
通常信息系統中最多見的是以下所列的4層:表示層,業務邏輯層,持久層,應用層。spa
模式介紹:設計
- 表示層(也稱爲UI層):主要對用戶的請求接受,以及數據的返回,爲客戶端提供應用程序的訪問。
- 應用層(也稱爲服務層):服務層的做用就是將表現層與業務邏輯層之間完成解耦。那麼表現層中就不會出現任何的業務代碼,固然這樣帶來的好處也是顯而易見的,就是當咱們修改業務層代碼時,咱們不須要修改表現層的代碼,
固然若是服務層設計的很差,那麼可能會形成反效果。htm
- 業務邏輯層(也稱爲領域層):主要是針對具體的問題的操做,也能夠理解成對數據層的操做,對數據業務邏輯處理,若是說數據層是積木,那邏輯層就是對這些積木的搭建。無疑是系統架構中體現核心價值的部分。它的關注點
主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計,也便是說它是與系統所應對的領域邏輯有關blog
- 數據訪問層(也稱爲持久化層):主要是針對非原始數據(數據庫或者文本文件等存放數據的形式)的操做層,而不是指原始數據,也就是說,是對數據庫的操做,而不是數據,具體爲業務邏輯層或表示層提供數據服務。
使用場景:接口
- 通常的桌面應用程序
- 電子商務Web應用程
模式特色
- 每一個模塊必須屬於某個層次,爲上層提供服務;同時委派任務給下層模塊。
- 任何一個模塊,都不能逆層次調用;屬於下層的模塊,不得調用(耦合)上層或上層次的模塊。任何一個模塊,都不得跨層次調用。
使用場景:
設計模式實現:
門面模式 ——咱們對於每一個模塊或者每一個層次都會設計一個「門面」來下降耦合的複雜程度。
策略模式——抽象層次會隱藏底層的實現細節,這就是策略模式最基本的設計,咱們每每會把上層做爲功能接口,下層做爲可選的策略來實現。
優勢
一、開發人員能夠只關注整個結構中的其中某一層;
二、能夠很容易的用新的實現來替換原有層次的實現;
三、能夠下降層與層之間的依賴;
四、有利於標準化;
五、利於各層邏輯的複用。
六、結構更加的明確
七、在後期維護的時候,極大地下降了維護成本和維護時間
缺點
一、下降了系統的性能。這是不言而喻的。若是不採用分層式結構,不少業務能夠直接造訪數據庫,以此獲取相應的數據,現在卻必須經過中間層來完成。
二、有時會致使級聯的修改。這種修改尤爲體如今自上而下的方向。若是在表示層中須要增長一個功能,爲保證其設計符合分層式結構,可能須要在相應的業務邏輯層和數據訪問層中都增長相應的代碼。
三、增長了開發成本。