軟件架構是對系統的高層視角,或者是對系統的抽象。它關注的是某些對完成這個系統有最大幫助的方面,例如:可用性,穩定性以及靈活性。同時,架構對如何達到這些目的給出了指導和約束。前端
軟件架構是軟件系統的一張藍圖。數據庫
架構是和平臺無關的,可確保開發的過程在必定的限制或者規則下進行。設計模式
架構和設計時兩個不一樣的概念,它們也出如今不一樣的階段,當軟件系統的架構肯定以後,設計就開始了。安全
- 結構是與系統的業務需求緊密聯繫。
- 設計時與系統的實現相關的。
- 設計將架構所關注的那些高層抽象的需求與具體的技術實現聯繫起來。
Tier是物理分層,Layer是邏輯分層數據結構
咱們可能會把架構和設計固化在可重用的代碼中,以便在建立其餘新的項目時重複使用。那麼咱們此時須要的就是一個框架:它以編碼的方式實現了架構和設計,更利於提升重用性和生產效率。架構
在軟件世界中,將架構和設計寫到框架裏面是下降開銷、提升重用性的最好方法。因此能夠把框架當作是架構和設計的一種積累,經歷多個項目的開發,不斷的修改和完善,最後使得整個框架在性能、伸縮性、安全性等方面都能知足需求。app
模式是經驗的重用,模式對軟件開發過程當中出現的一些問題給出了比較好的解決方案。框架
1、建立型模式:用來建立對象的模式,抽象了實例化的過程。性能
- 單件模式(單例模式)
- 抽象工廠模式
- 工廠方法模式
- 生成器模式
- 原型模式
2、結構型模式:此模式討論的是類和對象的結構,它採用繼承機制來組合接口或者實現,或者經過組合一些對象,來實現新的功能。編碼
- 適配器模式
- 橋接模式
- 裝飾着模式
- 組合模式
- 門面模式
- 享元模式
- 代理模式
3、行爲型模式:負責處理對象之間的信息交互和職責分配
- 職責鏈模式
- 命令模式
- 解釋器模式
- 迭代器模式
- 中介者模式
- 備忘錄模式
- 觀察者模式
- 狀態模式
- 策略模式
- 模板方法模式
- 訪問者模式
1、分層模式
- 無須過多的瞭解其餘層次,能夠直接將某層做爲一個有機總體來理解。
- 能夠替換某層的實現,並不會影響其餘層,只要替換先後提供的服務相同便可
- 能夠將層次間的依賴性減小到最低
- 分層有利於標準化工做
2、業務邏輯設計模式
- 事務腳本模式(Transaction Script):以線性或者面向過程的方式來組織業務邏輯,將每個業務流程都包裝爲一個大的、粗粒度的方法。
- 活動記錄(Active Record):活動記錄,以底層的數據結構爲基礎來組織業務邏輯,每一個對象都表明了表中一行記錄
- 領域模型(Domain Model):領域模型是對現實中的領域對象所進行的抽象和提煉,每一個領域對象包含本身的數據和行爲。
3、對象關係映射
- 工做單元(Unit Of Work):確保全部相關的對象的改變在一個業務事務裏面,同時確保在提交狀態的時候維護業務對象的狀態一致性,要麼一塊兒成功,要麼一塊兒失敗。
- 資源庫(Repository):用來協調領域和數據映射層,使得領域成徹底不關注數據的存取,隱藏了後臺的全部機制。
- 數據映射(DataMapper):指把原生的數據取出來複製給一個對象,而後把對象的數據再次轉換保存爲原生的數據的過程。
- 標識映射(Identity Map):經過在映射中保存每一個已經加載的對象,確保每一個對象只加載一次,當要訪問對象的時候,經過映射來查找它們。
- 延時加載(Lazy Load):只在真正須要這個數據的時候纔去加載。
- 查詢對象(Query Object):它可以用業務對象的語言而不是數據庫語言來描述查詢,這就意味着,咱們在構建查詢的時候,沒必要在乎數據庫中表名或者列名。
4、表現模式
- Model View Presenter (MVP)模式
- Model View Controller (MVC)模式
- Model View View Model(MVVM)模式
- Front Controller(前端控制器)模式
- Page Controller(頁面控制器)模式
5、基本模式
- Layer Supertype(層超類型),讓某一個類型充當一層全部類型的超類,在某一層中,全部的對象或者不少對象都具備相同的方法。