设计模式与软件架构
软件架构与设计模式都是提高软件设计质量和开发效率的重要途径,体现软件设计开发的原理、思想、方法和技术。
软件架构描述了软件的组成,例如,经典的“4 1”视图,将软件架构通过逻辑视图、开发视图、进程视图、物理视图及场景视图来进行描述。在这些视图中,描述了软件系统中类之间的关系、进程之间的关系、软件和硬件的结合等问题。一般来说,软件架构更倾向于从整体和全局上描述软件的组成。
设计模式则更侧重于类与类、对象与对象之间的关系。例如在逻辑视图中,可以使用多种设计模式来组织类与类之间的关系。设计模式和软件架构是面向不同层次问题的解决方案。设计模式是用来在特定场景下解决一般设计问题的类和互相通信的对象的解决方案。通俗地说,设计模式是对某一类问题的通用解决方案。
同设计模式一样,软件架构也有一些固定的模式,通常称为架构风格。常见的架构风格有分层架构、客户端—服务器架构、消息总线、面向服务的架构(Service-Oriented Architecture,SOA)等。
软件架构风格同设计模式在某种含义上是一致的。设计模式和软件架构中蕴含的很多思想是一致的。无论是架构风格还是设计模式,人们在追求良好设计的过程中,将一些常见解决方案总结、整理出来,形成固定的风格与模式。例如消息总线的架构风格同 Observer 模式就有神似之处。因此,掌握设计模式对于软件架构设计有非常大的帮助。
在学习设计模式时需要注意以下两点:
(1)学习这些模式是一个方面,另一方面更要了解模式中的思想。设计模式本身是为了提高软件架构的质量,学习设计模式的目的也是为了提高架构设计的水平。虽然设计模式中描述的大多是面向对象的低层设计方案,但其中包含的却是软件设计的思想,同软件架构风格是一致的。例如,MVC 既可以看作一种设计模式也可以看作一种架构风格。掌握这种设计思想是非常有意义的。
(2)设计模式虽然可以使设计变得更精妙,但滥用设计模式会适得其反。在软件设计中使用设计模式,可以优化设计,提高架构质量。但是,首先,设计模式有其应用的场合,不相宜的场合乱用设计模式有害无益;其次,设计模式主要解决对象之间相互通信、相互依赖的结构关系,架构设计师需要把握好使用设计模式的力度,过度的使用设计模式不但不会提高软件的复用性,反而会让架构变得混乱而难以维护。
,