由于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)”標題下詳盡論述使用此模式帶來的積極和消極的因素。