演化架构与紧急设计: 语言、表达性与设计:第 1 部分
2009-09-12 00:00:00 来源:WEB开发网紧急设计的一个主要推动者是发现和积累惯用模式的能力:在代码库中大量重复的流程、结构和惯例。但是,有时您并不能发现这些模式。在 演化架构与紧急设计 系列的 第 1 部分,我讨论了阻碍这些模式可见性的问题,比如过度的一般性。构建多层应用程序对于将问题分别处理,支持可扩展性和分区可能十分有效,但它隐藏了惯用模式,因为现在必须在多个层中查找它们。一个优秀的设计员和架构师需要培养洞察这些模式的眼光。
另一个阻碍积累模式(harvesting patterns)的因素是语言本身的表达性。例如,很难从汇编语言中积累模式,因为该语言的特点是抵触表达性。即使您对汇编语言的了解不亚于对母语的了解,在您编写代码的过程中仍然有无法逾越的障碍,使您无法获得完整的视角。例如,将变量传入和传出寄存器,而不能创建命名良好的变量和方法,这就意味着要将大量时间花在处理语言中固有的开销上。
与汇编语言相比,Java™ 语言有了进一步的发展,但是计算机语言的表达性差异很大。某些语言比其他语言表达性好,因此它们能更容易且更高效地发现模式。因此,本文 — 两部分中的第 1 部分 — 针对 JVM (Groovy) 使用动态语言展示一些四人组模式的其他实现方法。
重温设计模式
软件开发领域的一本影响深远的图书是 Eric Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 所著的 Design Patterns: Elements of Reusable Object-Oriented Software(见 参考资料)。该书包含两部分:软件开发中的常见问题说明及其解决方案示例。第一部分是一个宝贵的常见问题目录,但是模式的实现不可避免地出现了对某一特定语言的偏向。虽然样例实现貌似采用了 C++ 和 Smalltalk,但是几乎没有利用 Smalltalk 的高级语言特性。在很多方面,这些实现突出了 C++ 的局限以及解决该语言中固有问题所需的迂回方法。
更多精彩
赞助商链接