設計模式是支撐架構的重要組件html
架構設計也相似一種工做流,它是動態的,這點不象建築設計那樣,一開始就能徹底肯定,架構設計伴隨着整個項目的進行過程之中,有兩種具體操做保證架構設計的正確完成,那就是設計模式(靜態)和工程項目方法(RUP或XP 動態的)。java
設計模式是支撐架構的一種重要組件,這與建築有很相象的地方,一個建築物創建設計須要建築架構設計,在具體施工中,有不少建築方面的規則和模式。程序員
咱們從J2EE藍圖模式分類http://java.sun.com/blueprints/patterns/catalog.html中就能夠很清楚的看到J2EE這樣一個框架軟件的架構與設計模式的關係。數據庫
架構設計是骨架,設計模式就是肉設計模式
這樣,一個比較豐富的設計方案能夠交由程序員進一步完成了,載輔助以適當的工程方法,這樣就可保證項目的架構設計能正確快速的完成。安全
時刻牢記架構設計的目標服務器
2.架構設計的目標:網絡
因爲架構設計是在動態中完成的,所以在把握架構設計的目標上就很重要,所以在整個項目過程當中,甚至每一步咱們都必須牢記咱們架構設計的整體目標,能夠歸納下面幾點:架構
1. 最大化的重用:這個重用包括組件重用 和設計模式使用等多個方面。框架
好比,咱們項目中有用戶註冊和用戶權限系統驗證,這實際上是個通用課題,每一個項目只是有其內容和一些細微的差異,若是咱們以前有這方面成功研發經驗,能夠直接重用,若是沒有,那麼咱們就要進行這個子項目的研發,在研發過程當中,不能僅僅看到這個項目的需求,也要以架構的概念去完成這個能夠稱爲組件的子項目。
2. 儘量的簡單明瞭:咱們解決問題的總方向是將複雜問題簡單化,其實這也是中間件或多層體系技術的根本目標。可是在具體實施設計過程當中,咱們可能會將簡單問題複雜化,特別是設計模式的運用上很容易範這個錯誤,所以如何儘量的作到設計的簡單明瞭是不容易的。
我認爲落實到每一個類的具體實現上要真正能體現系統事物的本質特徵,由於事物的本質特徵只有一個,你的代碼越接近它,表示你的設計就是簡單明瞭,越簡單明瞭,你的系統就越可靠。更多狀況是,一個類並不能反應事物本質,須要多個類的組合協調,那麼可以正確使用合適的設計模式就稱爲重中之重。
咱們看一個具有好的架構設計的系統代碼時,基本看到的都是設計模式,寵物店(pet store)就是這樣的例子。或者能夠這樣說,一個好的架構設計基本是由簡單明瞭的多個設計模式完成的。
3. 最靈活的拓展性:架構設計要具有靈活性 拓展性,這樣,用戶能夠在你的架構上進行二次開發或更加具體的開發。
要具有靈活的拓展性,就要站在理論的高度去進行架構設計,好比如今工做流概念逐步流行,由於咱們具體不少實踐項目中都有工做流的影子,工做流中有一個樹形結構權限設定的概念就對不少領域比較通用。
3.定義:
軟件架構(software architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的草圖。
4.相關概念:
軟件體系結構是構建計算機軟件實踐的基礎。與建築師設定建築項目的設計原則和目標,做爲繪圖員畫圖的基礎同樣,一個軟件架構師或者系統架構師陳述軟件構架以做爲知足不一樣客戶需求的實際系統設計方案的基礎。
5.分類: