通常,概念和這些概念在現(xiàn)實(shí)世界中的應(yīng)用是有區(qū)別的,設(shè)計(jì)模式也不例外。
設(shè)計(jì)模式無處不在。在閱讀技術(shù)方面的出版物或者瀏覽技術(shù)方面的網(wǎng)站時(shí),很容易發(fā)現(xiàn)對(duì)設(shè)計(jì)模式的引用。到目前為止,您很可能已經(jīng)閱讀過(至少翻閱過)一些設(shè)計(jì)模式方面的書籍,如《Core J2EE Design Patterns》或者Gang of Four編寫的《Design Patterns》。此時(shí),您可能會(huì)對(duì)設(shè)計(jì)模式有一些疑問。設(shè)計(jì)模式如何幫助我?他們是銀彈嗎?使用設(shè)計(jì)模式有什么問題嗎?為什么我不能從集成開發(fā)環(huán)境(integrated development environment,IDE)中獲得設(shè)計(jì)模式?
上述的幾個(gè)問題是采用設(shè)計(jì)模式進(jìn)行處理過程中遇到的一些經(jīng)典問題。通常,概念和這些概念在顯示世界中的應(yīng)用是有區(qū)別的,設(shè)計(jì)模式也不例外。本文將討論設(shè)計(jì)模式在現(xiàn)實(shí)世界中的應(yīng)用。這些信息可以幫助您成功地在項(xiàng)目中采用設(shè)計(jì)模式來作出正確的決定。
快速概述 設(shè)計(jì)模式提供了一種共享經(jīng)驗(yàn)的方式,可以使團(tuán)體受益和避免不斷的重復(fù)發(fā)明。設(shè)計(jì)模式通常捕捉問題的描述、問題的語境、推薦的問題解決方案以及使用解決方案后可以預(yù)見到的結(jié)果。為了具有最廣泛的適用性(從而對(duì)更多的讀者有用),設(shè)計(jì)模式通常從取決于環(huán)境的精確細(xì)節(jié)中抽象而來。這種抽象性產(chǎn)生了一些把設(shè)計(jì)模式應(yīng)用到現(xiàn)有的案例中所必需的譯碼。這是一個(gè)重要細(xì)節(jié):盡管設(shè)計(jì)模式是共享專業(yè)知識(shí)的好方法,但通常它對(duì)正確應(yīng)用專業(yè)知識(shí)是非常重要的。
設(shè)計(jì)模式這個(gè)概念最初產(chǎn)生于建筑行業(yè)。設(shè)計(jì)師(設(shè)計(jì)建筑物而不是計(jì)算機(jī)系統(tǒng))意識(shí)到他們需要共享有關(guān)正確設(shè)計(jì)技術(shù)的想法。這些想法是在可以使設(shè)計(jì)師團(tuán)體從分享經(jīng)驗(yàn)和教訓(xùn)中獲益的設(shè)計(jì)模式中形成的。設(shè)計(jì)模式在80年代后期從建筑業(yè)進(jìn)入計(jì)算機(jī)系統(tǒng)領(lǐng)域。面向?qū)ο螅∣bject-oriented,OO)原則逐漸得到普及,而設(shè)計(jì)模式成為培育新的OO追隨者的最佳實(shí)踐。
Richard Gamma等(人們通常把他們稱作 Gang of Four [GoF] )編著的《Design Patterns: Elements of Reusable Object-Oriented Software》一書使設(shè)計(jì)模式成為萬眾矚目的焦點(diǎn)。隨著設(shè)計(jì)模式逐漸普及,他們所涉及的領(lǐng)域就像“Ben and Jerry”效應(yīng)那樣也逐漸廣泛起來。對(duì)那些不熟悉著名冰淇淋品牌的人來說,Ben and Jerry是一家冰淇淋產(chǎn)品的供應(yīng)商,其冰淇淋產(chǎn)品擁有各種可以想象得到的配料組合(還包括一些您永遠(yuǎn)想象不到的)。因此,它就是設(shè)計(jì)模式,和普通的OO設(shè)計(jì)模式一樣來源于GoF的著作,但是現(xiàn)在包括了專為開發(fā)語言、應(yīng)用服務(wù)器、行業(yè)合成等提供的設(shè)計(jì)模式。
設(shè)計(jì)模式分類 設(shè)計(jì)模式通常根據(jù)一些公共特性而組合在一起。GoF的著作把設(shè)計(jì)模式劃分為三類:Creational、Behavioral和Structural。用于J2EE的設(shè)計(jì)模式通常劃分為表現(xiàn)層(Presentation Tier)、業(yè)務(wù)邏輯層(Business Logic Tier)和集成層(Integration Tier)。這種分組方式可以使描述所有設(shè)計(jì)模式共享的公共細(xì)節(jié)更加輕松,或者使設(shè)計(jì)模式的分類和發(fā)現(xiàn)更加輕松。
在對(duì)設(shè)計(jì)模式實(shí)際應(yīng)用的討論中,需要把設(shè)計(jì)模式劃分為兩類:broad exposure和isolated use。這種劃分基于設(shè)計(jì)模式對(duì)應(yīng)用程序設(shè)計(jì)人員和開發(fā)人員的可見性和應(yīng)用程序的多個(gè)部分對(duì)設(shè)計(jì)模式的相依性。
Broad exposure 設(shè)計(jì)模式因?yàn)榭梢杂绊懚鄠€(gè)團(tuán)隊(duì)成員或者應(yīng)用程序的多個(gè)方面的設(shè)計(jì)和開發(fā)而聞名。這類設(shè)計(jì)模式的品質(zhì)包括:
- 采用它會(huì)對(duì)很多根據(jù)設(shè)計(jì)模式創(chuàng)建的類產(chǎn)生負(fù)面影響。
- 應(yīng)用程序的不同部分知道設(shè)計(jì)模式的使用。
- 使用這種設(shè)計(jì)模式的決定不能輕易取消。
這類設(shè)計(jì)模式的例子有Model-View-Controller(MVC)模式、Value Object J2EE模式和Data Access Object(DAO)J2EE模式
Isolated use是指設(shè)計(jì)模式的使用是隱藏細(xì)節(jié)的設(shè)計(jì)模式。這類設(shè)計(jì)模式的品質(zhì)包括:
- 設(shè)計(jì)模式不影響其他團(tuán)隊(duì)成員或者應(yīng)用程序其他部分的工作。
- 可以輕松地更改使用設(shè)計(jì)模式的決定,而且產(chǎn)生的影響極小。
這類設(shè)計(jì)模式的例子有Singleton GoF模式或者Intercepting Filter J2EE模式。
將設(shè)計(jì)模式劃分為幾類為了解設(shè)計(jì)模式的范圍提供了一種快速的方法。了解范圍使評(píng)估設(shè)計(jì)模式的影響更加輕松。可以使用或者拋棄這種設(shè)計(jì)模式嗎?一旦采用這種設(shè)計(jì)模式就會(huì)影響應(yīng)用程序的設(shè)計(jì)嗎?這種設(shè)計(jì)模式影響了應(yīng)用程序的多個(gè)部分和其他的應(yīng)用程序了嗎?預(yù)先了解這些影響為采用設(shè)計(jì)模式提供了指導(dǎo)。
設(shè)計(jì)模式應(yīng)用AntiPatterns
隨著設(shè)計(jì)模式逐漸普及,出現(xiàn)了另一種叫做AntiPatterns的模式類型。盡管設(shè)計(jì)模式提供了關(guān)于可重復(fù)的最佳方法的專業(yè)知識(shí),但是AntiPatterns通常描述應(yīng)當(dāng)避免的重復(fù)行為。AntiPatterns 驗(yàn)證了這樣的事實(shí):做錯(cuò)事情和辦對(duì)事情的人一樣多。
本節(jié)將探討設(shè)計(jì)模式采用中的AntiPatterns。了解這些AntiPatterns可以幫助您避免設(shè)計(jì)模式采用中的缺陷。如同設(shè)計(jì)模式一樣,在他們提供了一些遠(yuǎn)見或者他們是一些非常熟悉的環(huán)境時(shí),在他們可以為您的經(jīng)驗(yàn)添加色彩和使您不再感到孤獨(dú)時(shí),此處的AntiPatterns是一個(gè)全新的概念。如果您想閱讀更多有關(guān)AntiPatterns的資料,請參見本文結(jié)尾處的資源列表。
AntiPattern清單
設(shè)計(jì)模式?是的,我們?nèi)繐碛?/B>
問題:決定在項(xiàng)目中使用哪一種設(shè)計(jì)模式。
應(yīng)用: 既有broad exposure又有isolated use設(shè)計(jì)模式。
環(huán)境:一位開發(fā)人員通過介紹希望在一項(xiàng)工程中使用設(shè)計(jì)模式。
動(dòng)力:AntiPattern的動(dòng)力通常有兩種來源。一種是開發(fā)人員通過包括設(shè)計(jì)模式的最佳實(shí)踐來改進(jìn)項(xiàng)目的渴望。另一種是開發(fā)人員天生的好奇心驅(qū)使他利用這個(gè)項(xiàng)目來研究設(shè)計(jì)模式。
推薦的解決方案:項(xiàng)目中應(yīng)用了所有知名的設(shè)計(jì)模式。設(shè)計(jì)模式手冊生成一份清單,而目標(biāo)是可以核對(duì)所有的設(shè)計(jì)模式。
產(chǎn)生的語境:項(xiàng)目團(tuán)隊(duì)和交付的應(yīng)用程序由于不自然地引入太多設(shè)計(jì)模式而遭受損失。這就導(dǎo)致設(shè)計(jì)和開發(fā)非常復(fù)雜。這種不必要的復(fù)雜性會(huì)從已經(jīng)完成的工作量、開發(fā)團(tuán)隊(duì)了解發(fā)生事情的能力、應(yīng)用程序的實(shí)際性能和功能的正確性等方面影響開發(fā)成果。
設(shè)計(jì)基本原理:設(shè)計(jì)模式是專業(yè)知識(shí)的主要來源。盡管使用他們的效果很好,但是全部使用他們就未必也是好的。
實(shí)際解決方案:設(shè)計(jì)模式的描述包含了使用模式的目標(biāo)語境。必須考慮如何確保設(shè)計(jì)模式匹配項(xiàng)目。第二,設(shè)計(jì)模式不是來源于當(dāng)某人閱讀了一本設(shè)計(jì)模式的著作后,問:“我可以把這個(gè)設(shè)計(jì)模式使用在什么地方?”而是來源于某人尋找已發(fā)現(xiàn)問題的解決方案。
Developer/Project AntiPattern的實(shí)現(xiàn)
(也稱為:Design pattern xyz? Yeah,我們有10個(gè))
問題:在項(xiàng)目中或者項(xiàng)目之間控制設(shè)計(jì)模式的實(shí)現(xiàn)。
應(yīng)用:broad exposure和isolated use設(shè)計(jì)模式都從解決這種環(huán)境中受益。但是,broad exposure設(shè)計(jì)模式無疑控制了實(shí)現(xiàn)。
語境:開發(fā)團(tuán)隊(duì)將設(shè)計(jì)模式結(jié)合到項(xiàng)目中。團(tuán)隊(duì)由許多經(jīng)驗(yàn)豐富的開發(fā)人員組成,他們知道應(yīng)該什么時(shí)候使用設(shè)計(jì)模式。所以會(huì)正確的設(shè)計(jì)模式。如果涉及到多個(gè)項(xiàng)目,項(xiàng)目之間沒有設(shè)計(jì)模式實(shí)現(xiàn)共享。
動(dòng)力:最終期限日益臨近,團(tuán)隊(duì)成員工作效率很高。重新使用實(shí)現(xiàn)會(huì)影響團(tuán)隊(duì)效率。假設(shè)他們都是專家,他們的實(shí)現(xiàn)都非常優(yōu)秀。在多項(xiàng)目情況中,跨團(tuán)隊(duì)通信和代碼共享要么沒有被考慮,要么被作為進(jìn)度表中的潛在影響被排除。
推薦的解決方案:團(tuán)隊(duì)可以根據(jù)需要單獨(dú)包含和實(shí)現(xiàn)設(shè)計(jì)模式。
產(chǎn)生的語境:即使使用了正確的設(shè)計(jì)模式,但是他們是以很多不同的方式實(shí)現(xiàn)的。在限制集成和重新使用成果的實(shí)現(xiàn)之間存在不兼容。很多不必要的時(shí)間和工作被花費(fèi)在維護(hù)、調(diào)試和擴(kuò)展各種實(shí)現(xiàn)上。最終,各種實(shí)現(xiàn)都將被統(tǒng)一。
設(shè)計(jì)基本原理:應(yīng)當(dāng)允許專家成員獨(dú)立工作。只要所包含的設(shè)計(jì)模式足夠好,就不需要共享實(shí)現(xiàn)。
實(shí)際解決方案:開發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)協(xié)調(diào)設(shè)計(jì)模式的使用。共享設(shè)計(jì)模式的公共實(shí)現(xiàn)可在將來降低成本,但是更重要的是,它使開發(fā)人員之間互相兼容。如果需要,這種共享可以被限制到劃歸先前討論的broad exposure設(shè)計(jì)模式內(nèi)。重用實(shí)現(xiàn)在項(xiàng)目間也極有價(jià)值,尤其在未來將要集成的時(shí)候。
設(shè)計(jì)模式采用中IDE的角色
IDE在繼續(xù)發(fā)展和提供更多的功能。最初的IDE組成了一種編輯環(huán)境和一些調(diào)試工具?,F(xiàn)在,他們通常包含設(shè)計(jì)環(huán)境、審計(jì)工具、配置管理系統(tǒng)集成等等。隨著IDE不斷擴(kuò)展范圍,需要確認(rèn)他們在設(shè)計(jì)模式實(shí)現(xiàn)中的角色。誠然,設(shè)計(jì)模式在開發(fā)語言中實(shí)現(xiàn),而IDE可以用于編輯源代碼。但是,IDE可以扮演其他的角色嗎?
一些IDE具有下拉菜單,使您能夠選擇應(yīng)用程序中包括的設(shè)計(jì)模式。雖然這可以加快設(shè)計(jì)模式的使用,但是它只會(huì)導(dǎo)致更快地編寫出極差的代碼。評(píng)估這個(gè)特性需要記住幾個(gè)因素。
第一,設(shè)計(jì)模式在抽象中描述問題,并需要一些譯碼來達(dá)到正確的實(shí)現(xiàn)。但是,他們常常包含“示例實(shí)現(xiàn)(sample implementation)”,并且IDE正是將這種示例類結(jié)構(gòu)插入到應(yīng)用程序中。這很可能不是所需要的實(shí)現(xiàn),并且把他們放到應(yīng)用程序中將帶來更多的困惑,以及需要更多的編輯和重構(gòu)工作而不是思考最初的實(shí)現(xiàn)。
第二,和IDE拖放設(shè)計(jì)模式方法有關(guān)的另一個(gè)問題是前面討論的兩種AntiPatterns。加快設(shè)計(jì)模式的實(shí)現(xiàn)很可能會(huì)產(chǎn)生大量的設(shè)計(jì)模式應(yīng)用,以及同一設(shè)計(jì)模式的多種版本,而不是解決任意問題的版本。
設(shè)計(jì)模式面臨的挑戰(zhàn)不僅僅是得到一次快速實(shí)現(xiàn),而是確定使用了正確的實(shí)現(xiàn),以及機(jī)構(gòu)中已有的一個(gè)完美的實(shí)現(xiàn)。
BEA WebLogic Workshop 8.1和設(shè)計(jì)模式
您可能是一位BEA的客戶,如果您正在閱讀本文,您可能想知道新的BEA WebLogic Workshop 8.1是如何影響您的設(shè)計(jì)模式考慮的。首先,WebLogic Workshop是IDE,因此前面有關(guān)IDE的章節(jié)同樣適用。對(duì)這些討論感興趣的Workshop的兩個(gè)額外方面是控件和預(yù)實(shí)現(xiàn)的設(shè)計(jì)模式。
WebLogic Workshop Controls是打包功能的一種方法,可以輕松將其包含到使用Workshop IDE的應(yīng)用程序中。打包包括IDE必需的可視元素、運(yùn)行時(shí)行為、要求的配置等等??丶侨绾斡绊懺O(shè)計(jì)模式應(yīng)用的呢?還記得設(shè)計(jì)模式在前面劃分為isolated use和broad exposure嗎?劃分到isolated use類的設(shè)計(jì)模式可能被打包成 Workshop Controls。把設(shè)計(jì)模式作為控件打包可使 Workshop IDE的其他用戶共享實(shí)現(xiàn),從而避免了每一個(gè)Developer/Project AntiPattern中的實(shí)現(xiàn)。
您可能想知道為什么broad exposure設(shè)計(jì)模式為什么不可以作為控件實(shí)現(xiàn)。原因是broad exposure設(shè)計(jì)模式導(dǎo)致創(chuàng)建了許多其他類或者獨(dú)立于其他應(yīng)用程序。這種情況就不適合控件的即插即用方面。broad exposure設(shè)計(jì)模式的采用應(yīng)當(dāng)三思而后行,一旦采用就不能輕易取消。這些要求不符合WebLogic Workshop Control的目標(biāo)。
WebLogic Workshop還具有很多預(yù)實(shí)現(xiàn)設(shè)計(jì)模式,如Pageflow和用戶接口結(jié)構(gòu)。在Workshop 中,您可以創(chuàng)建JSP和定義Pageflow來控制Web應(yīng)用程序頁面之間的定位。在這種情況下,WebLogic Workshop使用流行的Apache Struts 表現(xiàn)層框架。Workshop的這個(gè)方面(使用 Struts)提供了一種Model-View-Controller(MVC)設(shè)計(jì)模式實(shí)現(xiàn),意味著不用創(chuàng)建自己的MVC實(shí)現(xiàn)。Workshop包含的其他功能很可能替代您自己的設(shè)計(jì)模式實(shí)現(xiàn)。盡管一些設(shè)計(jì)模式實(shí)現(xiàn)的開盒即用很好,但是應(yīng)當(dāng)驗(yàn)證不僅實(shí)現(xiàn)而且實(shí)現(xiàn)創(chuàng)建的WebLogic任何依從性也非常合適。
成功采用設(shè)計(jì)模式的三個(gè)步驟
如何把設(shè)計(jì)模式的采用和日益臨近的最后期限、緊縮的預(yù)算和很多公司現(xiàn)有的有限團(tuán)隊(duì)資源相結(jié)合?以下是成功制訂設(shè)計(jì)模式的三個(gè)步驟。
強(qiáng)大的通信和培訓(xùn)
許多機(jī)構(gòu)擁有領(lǐng)先技術(shù),可能正式通過了設(shè)計(jì)師論壇的論證或者非正式的公認(rèn)專家。這些領(lǐng)先廠商將推廣設(shè)計(jì)模式采用中的開放通信,并將培訓(xùn)開發(fā)具體設(shè)計(jì)模式的團(tuán)隊(duì)。通信應(yīng)當(dāng)跨開發(fā)團(tuán)隊(duì)和項(xiàng)目以便預(yù)先防止采用豎井和多種惟一的實(shí)現(xiàn)(謹(jǐn)記每個(gè)Developer/Project AntiPattern的實(shí)現(xiàn))。培訓(xùn)可以采用正式的internal lunch-and-learns、正式的internal class或者派一些員工參加外部培訓(xùn)。這些培訓(xùn)方式將促進(jìn)正確的設(shè)計(jì)模式應(yīng)用程序。如果僅有極少的觀眾能夠參加培訓(xùn),最佳的候選人是那些感覺適合在回來后能夠培訓(xùn)其同事的人。
設(shè)計(jì)模式采用指導(dǎo)
設(shè)計(jì)模式可用于使項(xiàng)目受益,但是他們也可能因?yàn)檎`用而對(duì)應(yīng)用程序造成損害。應(yīng)當(dāng)鼓勵(lì)采用他們,但是對(duì)其的采用應(yīng)當(dāng)受到審閱和驗(yàn)證。設(shè)計(jì)模式可以包含在設(shè)計(jì)和開發(fā)過程中。在任何一種情況中,設(shè)計(jì)模式的使用應(yīng)當(dāng)由審閱者確認(rèn)和驗(yàn)證。在審閱過程中還可能會(huì)遇到這樣的情況,額外的設(shè)計(jì)模式不適用于最初包括的地方。即使環(huán)境中沒有進(jìn)行正式的審閱,這一步驟也可以通過同事審閱或者團(tuán)隊(duì)討論來完成。這一步驟中的審閱者要么是主要團(tuán)隊(duì)的成員,要么與他們建立開放通信。
指導(dǎo)采用對(duì)于broad exposure類別的設(shè)計(jì)模式非常關(guān)鍵。這些設(shè)計(jì)模式具有很多相關(guān)的風(fēng)險(xiǎn),因?yàn)樗麄儗?chuàng)建依賴性。這些依賴性可能在一些對(duì)象類中,例如,只工作在更加廣泛的DAO設(shè)計(jì)模式實(shí)現(xiàn)范圍中的數(shù)據(jù)訪問對(duì)象(DAO)、或者跨應(yīng)用程序邊界(如使用Value Object設(shè)計(jì)模式在應(yīng)用程序和應(yīng)用程序?qū)又g傳輸數(shù)據(jù))。這些設(shè)計(jì)模式也可以由項(xiàng)目中的其他人或者不同項(xiàng)目的人實(shí)現(xiàn),而且實(shí)現(xiàn)應(yīng)當(dāng)重新使用,不同于創(chuàng)建另一種獨(dú)特的實(shí)現(xiàn)。
重用實(shí)現(xiàn),不只是設(shè)計(jì)模式
只要在創(chuàng)建自己的設(shè)計(jì)模式實(shí)現(xiàn)中有一定的滿足,團(tuán)隊(duì)和公司就可以在重用發(fā)生在代碼層時(shí),而不是設(shè)計(jì)創(chuàng)意層時(shí)獲得更多益處。使企業(yè)獲益的最初設(shè)計(jì)模式是改進(jìn)的實(shí)現(xiàn)。但是,真正的目標(biāo)是重用實(shí)現(xiàn)。重用實(shí)現(xiàn)將導(dǎo)致:a)其他可重用的類(取決于公共實(shí)現(xiàn));b)縮短開發(fā)時(shí)間和降低成本;c)縮短維護(hù)時(shí)間和降低成本;d)在應(yīng)用程序之間和內(nèi)部輕松集成。
這種重用對(duì)broad exposure設(shè)計(jì)模式非常重要(有時(shí)是基本的)。這些設(shè)計(jì)模式創(chuàng)建了外部依賴性(集成將從公共實(shí)現(xiàn)中受益)或者產(chǎn)生全部的自定義類庫(如果有公共基礎(chǔ)將可重用)。isolated use設(shè)計(jì)模式也可以從重用中獲益,但是如果他們是根據(jù)具體情況定制的,他們就非常難以重用。
有時(shí)您可能會(huì)問自己:“如果重用比較好,為什么設(shè)計(jì)模式和可以重用的實(shí)現(xiàn)不可以一同應(yīng)用呢?”在我們討論設(shè)計(jì)模式如何使更多讀者獲益的時(shí)候才會(huì)討論這個(gè)問題。如果可能,如果已經(jīng)預(yù)定義了實(shí)現(xiàn),那么達(dá)到廣泛適用性這個(gè)目標(biāo)就會(huì)非常困難。然而,一旦設(shè)計(jì)模式被應(yīng)用到特殊的問題域或者技術(shù)基礎(chǔ)設(shè)施中,那么就可以重用在該環(huán)境中產(chǎn)生的實(shí)現(xiàn)。
架構(gòu)中的設(shè)計(jì)模式
這看起來像是一件可怕的任務(wù),需要掌握設(shè)計(jì)模式如何應(yīng)用在實(shí)際情況中,如何構(gòu)建優(yōu)質(zhì)的實(shí)現(xiàn),以及如何促進(jìn)重用實(shí)現(xiàn)。完成該任務(wù)的方法之一就是在環(huán)境中引入應(yīng)用程序架構(gòu)。應(yīng)用程序架構(gòu)提供了應(yīng)用程序需要的結(jié)構(gòu),從而使開發(fā)團(tuán)隊(duì)可以關(guān)注應(yīng)用程序的域邏輯。這包含了已實(shí)現(xiàn)的設(shè)計(jì)模式。除了重用設(shè)計(jì)模式概念或者單個(gè)實(shí)現(xiàn)之外,可以在多個(gè)項(xiàng)目和應(yīng)用程序之間重用架構(gòu)。這種共享的公共實(shí)現(xiàn)確保了兼容性,并為開發(fā)和維護(hù)多種不同的實(shí)現(xiàn)提供了一種低成本替代方案。兼容性提供了重新使用需要的技術(shù)基礎(chǔ)。沒有足夠的篇幅在這里深入討論架構(gòu)的其他重要品質(zhì),如運(yùn)行時(shí)監(jiān)測和管理、可配置應(yīng)用程序邏輯和適應(yīng)性行為等。您可以從Carnegie Mellon Software Engineering Institute (www.sei.cmu.edu/ata/ata_init.html) 中學(xué)習(xí)到更多有關(guān)架構(gòu)的知識(shí)。
結(jié)束語
設(shè)計(jì)模式是一種令人驚異的資源,應(yīng)該使用他以增加您的優(yōu)勢。雖然設(shè)計(jì)模式提供了可重用的概念,但是面臨的挑戰(zhàn)是決定使用哪一種設(shè)計(jì)模式和致力于可以重用的實(shí)現(xiàn)。通過了解采用設(shè)計(jì)模式中會(huì)產(chǎn)生的風(fēng)險(xiǎn),就可以在繼續(xù)學(xué)習(xí)和實(shí)現(xiàn)更多設(shè)計(jì)模式時(shí)避免風(fēng)險(xiǎn)。
按照本文概述的步驟會(huì)產(chǎn)生一個(gè)流程,用于在團(tuán)隊(duì)和機(jī)構(gòu)中推廣成功的設(shè)計(jì)模式采用。
參考資料
關(guān)于作者
Walter Hurst是Wakesoft的奠基人和首席技術(shù)官。他在尖端技術(shù)領(lǐng)域工作了十年。成立Wakesoft 之前,Walter是一名獨(dú)立咨詢師,主要使用Wakesoft技術(shù)的早期版本為客戶提供互聯(lián)網(wǎng)解決方案。在此之前,Walter是Xpedior的技術(shù)設(shè)計(jì)師,負(fù)責(zé)領(lǐng)導(dǎo)internal efforts開發(fā)實(shí)現(xiàn)在多個(gè)客戶項(xiàng)目中的應(yīng)用程序架構(gòu)。在加入Xpedior之前,Walter是Andersen Consulting?Center戰(zhàn)略技術(shù)方面的高級(jí)咨詢師。在Andersen,Walter為多家財(cái)富100客戶領(lǐng)導(dǎo)Enterprise項(xiàng)目。Walter在密歇根州大學(xué)獲得計(jì)算機(jī)工程學(xué)士學(xué)位。