java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧

java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧

ID:30768947

大?。?0.50 KB

頁數(shù):8頁

時間:2019-01-03

java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧_第1頁
java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧_第2頁
java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧_第3頁
java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧_第4頁
java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《java的設(shè)計模式-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Java的設(shè)計模式-Java開發(fā)Java經(jīng)驗技巧Java的設(shè)計模式木文作者:ImportNew?唐小娟未經(jīng)許可,禁止轉(zhuǎn)載!生命中唯一不變的事實就是世事時刻在變。這在軟件開發(fā)的每一個階段都不可避免。我們所要面對的挑戰(zhàn)是:要以最小的延遲和最大的靈活性來適應(yīng)變化。令人欣慰的是有人已經(jīng)解決了你的設(shè)計問題,而且他們的方法已經(jīng)形成了最佳實踐了;這些公認(rèn)為最佳實踐的方法就是“設(shè)計模式”。今天我們要研究兩個最流行的設(shè)計模式,學(xué)習(xí)怎樣使用好的設(shè)計訃你得代碼更干凈,訃擴展性更好。適配器模式(AdapterDesignPattern)我們假設(shè)你有一個III系統(tǒng),現(xiàn)在你需要讓它適應(yīng)新的三方

2、庫,但是這個庫用的是完全不同的API。舊系統(tǒng)適用的接口是完全不同于新庫的。當(dāng)然,你若夠勇敢的話,可以改掉舊的代碼以適用新的接口。但是對于所有舊系統(tǒng)來說,千萬不要這么做。適配器模式救了你的命!你可以簡單的寫一個適配器(新的封裝類)好的設(shè)計不僅是可以重復(fù)使用,還要貝有可擴展性。適配器使用了接口,并且轉(zhuǎn)換成客戶端可以解析的接口,使不兼容的類聯(lián)系在一起。實戰(zhàn)適配器設(shè)計模式好了,閑話少說,我們來實戰(zhàn)演習(xí)。我們舊系統(tǒng)使用的是下面的LegacyVideoController接口來控制視頻系統(tǒng)。publicinterfaceLegacyVideoController!/***Beg

3、instheplaybackafterstartTimeTicks*fromthebeginningofthevideo*@paramstartTimcTickstimeinmilliseconds*/publicvoidstartPlayback(longstartTimeTicks);???}客戶端這樣使用控制器:publicvoidplayBackVidco(longtimcToStart,LcgacyVidcoControllercontroller){if(controller!=null){controller.startPlayback(timeToS

4、tart);用戶需求變了!用戶需求改變也不是什么新鮮事一一這時常發(fā)生。用戶需求總是在變,而我們的系統(tǒng)需耍適應(yīng)新的視頻控制器,接口如下:publicinterfaceAdvancedVideoControl1er{/***Placesthecontrollerheadaftertime*fromthebeginningofthetrack*?paramtimetimedefineshowmuchseekisrequired*/publicvoidseek(Timetime);/***Playsthetrack*/publicvoidplay();}然后客戶端代碼失效了

5、,新的接口不再兼容了。適配器救了我們那么我們?nèi)绾翁幚磉@個改變了的接口,而不改變我們舊的代碼呢?你知道答案了,不是嗎?我們寫個簡單的適配器類,就像這樣:publicclassAdvancedVideoControllerAdapterimplementsLegacyVideoController{privateAdvancedVideoControl1eradvancedVideoController;publicAdvancedVideoControllerAdapter(AdvancedVideoControIleradvancedVideoController)

6、{this.advancedVideoController二advancedVideoController;}?OverridepublicvoidstartPlayback(longstartTimeTicks){//ConvertlongintoDateTimeTimestartTime=getTime(startTimeTicks);//AdaptadvancedVideoController.seek(startTime);advancedVideoController.play();適配器實現(xiàn)了目標(biāo)的接口,所以不需要更改客戶端代碼。我們的適配器類中含有需要

7、兼容的接口(AdvancedVideoController)的實例。這種“hasp”的關(guān)系讓適配器將客戶端的請求發(fā)給實際的實例。適配器也能夠減少客戶端和實現(xiàn)代碼之間的耦合?,F(xiàn)在我們可以簡單的將新對象封裝到適配器屮去,而且不需要更改客戶端代碼,因為這個新對象已經(jīng)兼容了以前的接口。AdvancedVideoControlleradvancedController二controllerFactory.createController();//adaptLcgacyVidcoControllercontrollcrAdaptcr二newAdvancedVideoCont

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。