设计模式是架构的手段(之一)。
具体一点说,设计模式可以在某些情况帮助架构软件的静态结构。
而架构的范围要大一些,更高层一些,考虑的更多的是非常重要的全局性的design decision。一般好的(静态)架构可以尽量使变化发生在局部(模块内)而不影响整个系统。架构上的变化往往成本会非常高。
而且设计模式只有一些是适用于架构的,冲运还有一些只是用于具体的类设计的,剩下的一些则只是克服编程语言的限制而已。
打个不恰当的比方,有点像挡拆和战术的关系。
在合适的情况下用好挡拆可以很好的执行战术,
但战术不只有挡拆,
而且有的战术不需要挡拆,
最重要的是盲目的用挡拆有时候反而会起反作用。
面对客户哔哔时,我们用需求分析架构。
面对整个软件或系统时,我们谈论架消磨构分析。
面对软件模块设计时,我们使用设计模式。
面对模块实现时,我们应用特定编程语言的特性。
软件架构 :一般场景下拥有设计的选择权
设计模式 :选择后特定场景下的最佳实践
软件架构是软件的一种搭建形式,往往规定了软件的模块组成,通信接口(含通信数据结散桥梁构),组件模型,集成框架等等。往往规定了具体的细节。
设计模式是一种软件的实现方法,是一种抽象的方法论,是为了更好的实现软件而归纳出来的有效方法。
实现一种软件架构,不同组成部分可能用到不同的设计模式,某一部分也可能可以采用不同的设计模式实现。