由于GoF(Gamma, Helms, Johnson, and Vlissides)的设计模式的广发普及,软件工程专家们找到了一个新的强有力的设计方法。什么是设计模式?他们这样定义:“设计模式就是描述一个反复出现的问题,以及解决这个问题的方案的核心。你可以重复使用这个解决方案而无须再做重复劳动。”一般来说,一个设计模式包括四个基本要素:模式名称,需要解决的问题,解决方案和使用带来模式的效果(或后果)。
接下来我们讨论的内容其实也不是什么新东西。它们是一些许多有经验的开发人员所知道的并经常使用的简单,标准,通用的方法。仿照最初设计模式集的方式,我们对这些显而易见的方法分类和命名,希望可以使用这些命名(通过生动地捕捉这些方法的基本功能获得的)来证实它们是非常有价值的。我们把它们命名为“Web和企业架构设计模式(Web and EnterPRise Architecture Design Patterns)”,简称“WEA设计模式”一个应用程序级的设计模式的宏观命名。
作为一个J2EE的热衷者,我们仅仅关注与java相关的问题和解决方案上,尽管这样,许多概念对其他技术也还是相当有帮助的。(难道设计模式不是独立于语言的吗?这是一个相当吸引人的想法,但是确实存在争论,如GoF的模式Abstract Factory and Prototype对C++和SmallTalk是非常有用的,而对Java来说是多余的。因为Java的Class类和类的反射机制非常好的解决了这些问题。)
模式描述 我们粗略地使用GoF建立的描述结构来描述我们的模式。为了简便,我们将压缩处理为三个大标题。在“意图(Intent)”标题下,我们用一行陈述使用这个模式的意图。我们在“问题和方案(Problem and Solution)”标题下阐述要解决的问题及其解决方案。最后,我们在“效果(Consequences)”标题下详尽论述使用此模式带来的积极和消极的因素。