設計模式是架構的手段(之一)。 具體一點說,設計模式可以在某些情況幫助架構軟體的靜態結構。 而架構的範圍要大一些,更高層一些,考慮的更多的是非常重要的全域性性的design decision。一般好的(靜態)架構可以儘量使變化發生在區域性(模組內)而不影響整個系統。架構上的變化往往成本會非常高。 而且設計模式只有一些是適用於架構的,還有一些只是用於具體的類設計的,剩下的一些則只是克服程式語言的限制而已。 打個不恰當的比方,有點像擋拆和戰術的關係。 在合適的情況下用好擋拆可以很好的執行戰術, 但戰術不只有擋拆, 而且有的戰術不需要擋拆, 最重要的是盲目的用擋拆有時候反而會起反作用。 面對客戶嗶嗶時,我們用需求分析架構。 面對整個軟體或系統時,我們談論架構分析。 面對軟體模組設計時,我們使用設計模式。 面對模組實現時,我們應用特定程式語言的特性。 軟體架構 :一般場景下擁有設計的選擇權 設計模式 :選擇後特定場景下的最佳實踐 軟體架構是軟體的一種搭建形式,往往規定了軟體的模組組成,通訊介面(含通訊資料結構),元件模型,整合框架等等。往往規定了具體的細節。 設計模式是一種軟體的實現方法,是一種抽象的方法論,是為了更好的實現軟體而歸納出來的有效方法。 實現一種軟體架構,不同組成部分可能用到不同的設計模式,某一部分也可能可以採用不同的設計模式實現。
設計模式是架構的手段(之一)。 具體一點說,設計模式可以在某些情況幫助架構軟體的靜態結構。 而架構的範圍要大一些,更高層一些,考慮的更多的是非常重要的全域性性的design decision。一般好的(靜態)架構可以儘量使變化發生在區域性(模組內)而不影響整個系統。架構上的變化往往成本會非常高。 而且設計模式只有一些是適用於架構的,還有一些只是用於具體的類設計的,剩下的一些則只是克服程式語言的限制而已。 打個不恰當的比方,有點像擋拆和戰術的關係。 在合適的情況下用好擋拆可以很好的執行戰術, 但戰術不只有擋拆, 而且有的戰術不需要擋拆, 最重要的是盲目的用擋拆有時候反而會起反作用。 面對客戶嗶嗶時,我們用需求分析架構。 面對整個軟體或系統時,我們談論架構分析。 面對軟體模組設計時,我們使用設計模式。 面對模組實現時,我們應用特定程式語言的特性。 軟體架構 :一般場景下擁有設計的選擇權 設計模式 :選擇後特定場景下的最佳實踐 軟體架構是軟體的一種搭建形式,往往規定了軟體的模組組成,通訊介面(含通訊資料結構),元件模型,整合框架等等。往往規定了具體的細節。 設計模式是一種軟體的實現方法,是一種抽象的方法論,是為了更好的實現軟體而歸納出來的有效方法。 實現一種軟體架構,不同組成部分可能用到不同的設計模式,某一部分也可能可以採用不同的設計模式實現。