Java应用架构设计:模块化模式与OSGi
上QQ阅读APP看书,第一时间看更新

前言

在1995年的时候,设计模式曾经风靡一时。今天,我却发现情况完全相反。模式变得司空见惯,大多数的开发人员在日常工作中会不假思索地使用模式。现在,很少会出现像“四人组”(Gang of Four,GoF)模式 [1]那样有影响力的新模式。实际上,这个产业从模式运动以来已经有了很大的改进。模式变得不再那么时尚,它们成了开发人员工具箱中的一部分并用来帮助设计软件系统。

但是,设计模式在过去十多年所扮演的角色不应被低估。它作为催化剂,推动面向对象开发成为主流。它们帮助大批开发人员理解了继承的真正价值以及如何有效使用它。模式提供了如何构建灵活且有弹性软件系统的深刻见解。借助金子般的智慧,如“优先使用组合而不是类继承”以及“面向接口编程而不是面向实现”(Gamma 1995),模式帮助一代软件开发人员接受了一种新的编程范式。

今天,模式还在广泛使用,但对很多开发人员来说,它们是很自然的事情。开发人员不再争论使用策略模式(Strategy pattern)的好处,他们也不必再参考GoF的书来识别哪个模式最适合当前的需要。相反,好的开发人员能够本能地设计面向对象的软件系统。

很多模式是永恒的。它们与特定的平台、编程语言或者编程时代无关。做一些细微的修改并且对细节稍加关注,一个模式就能变成适合给定上下文的形式。很多事情是与上下文相关的,包括平台、语言以及要解决问题的复杂程度。随着更多地学习模式,我们提供了在特定语言下如何使用模式的样例,并将其称为习语(idiom)。

我认为本书中的模块化模式也是永恒的。它们与特定的平台或语言无关。不管你是使用Java还是.NET、OSGi [2]还是Jigsaw [3],或者是想构建更加模块化的软件,本书中的模式都会帮助到你。随着时间的推移,我们将会看到一些习语出现,它们将描述如何将这些模式应用到支持模块化的平台上,并且会有工具帮助我们使用这些模式重构软件系统。我希望当有工具出现的时候,它们能够不断地进化来帮助开发模块化的软件。但最重要的是,我希望在你们的帮助下,这些模式能够进化并且变成有助于设计更好软件的模式语言——这些软件将会实现模块化的优点。时间将会告诉我们一切。