軟件開發(fā)實踐$設(shè)計模式-01代理模式

軟件開發(fā)實踐$設(shè)計模式-01代理模式

ID:37304997

大?。?89.41 KB

頁數(shù):15頁

時間:2019-05-21

軟件開發(fā)實踐$設(shè)計模式-01代理模式_第1頁
軟件開發(fā)實踐$設(shè)計模式-01代理模式_第2頁
軟件開發(fā)實踐$設(shè)計模式-01代理模式_第3頁
軟件開發(fā)實踐$設(shè)計模式-01代理模式_第4頁
軟件開發(fā)實踐$設(shè)計模式-01代理模式_第5頁
資源描述:

《軟件開發(fā)實踐$設(shè)計模式-01代理模式》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、軟件開發(fā)實踐設(shè)計模式-01代理模式共15頁(包括封面)擬制IT實踐者設(shè)計模式-01代理模式http://hi.baidu.com/it實踐者/home修改記錄擬制人/擬制/更改版本號更改內(nèi)容修改人修改日期理由1.0IT實踐者2010-10-02創(chuàng)建JAVA,OO,組件,框架,架構(gòu),模式,需求,領(lǐng)域設(shè)計,產(chǎn)品化,開源第2/15頁設(shè)計模式-01代理模式http://hi.baidu.com/it實踐者/home業(yè)務(wù)場景:在軟件部署實施后,要求可監(jiān)控到每個業(yè)務(wù)服務(wù)執(zhí)行的SQL語句,具體要求有:1)每個業(yè)務(wù)服務(wù)執(zhí)行的完整SQL語句這樣可以通過SQL語句的執(zhí)行順序跟蹤數(shù)據(jù)流變化;當(dāng)出現(xiàn)主鍵沖突,外

2、鍵關(guān)聯(lián)失敗時可以跟蹤到是哪個值引起出錯,快速糾正錯誤;2)每條SQL執(zhí)行的時間可用于分析SQL性能方案A:封裝java.sql.Statement和java.sql.PreparedStatement類,在凡是SQL執(zhí)行的地方記錄SQL語句和計算SQL耗時,一個例子如下:importjava.sql.Statement;importjava.sql.SQLException;publicfinalclassStatementHelper{publicstaticvoidexecute(Statementstat,Stringsql)throwsSQLException{longstart

3、Time=System.currentTimeMillis();stat.execute(sql);longcostTime=System.currentTimeMillis()-startTime;JAVA,OO,組件,框架,架構(gòu),模式,需求,領(lǐng)域設(shè)計,產(chǎn)品化,開源第3/15頁設(shè)計模式-01代理模式http://hi.baidu.com/it實踐者/homelog("sql:"+sql+",cost:"+costTime);--這里只簡單記錄日志,實際代碼這里會做封裝}}這樣封裝后可以滿足業(yè)務(wù)要求,但存在幾個缺點(diǎn):1、開發(fā)人員必須遵循開發(fā)規(guī)范,不能直接使用java.sql.Statem

4、ent類,必須使用封裝后的幫助類,對于開發(fā)規(guī)范,可以要求團(tuán)隊人員遵守,這不算重大缺點(diǎn)2、對于已經(jīng)完成的項目,原來沒有使用幫助類的,如果要滿足業(yè)務(wù)要求,要做大量的代碼修改因此我們希望能找到一個解決方案,可以屏蔽對開發(fā)人員的要求,并且可以減少對已有項目代碼的改動。下面這個解決方案我們可以深刻理解到“針對接口編程”的好處和“代理模式”的應(yīng)用場景。首先來看java.sql包中的幾個接口:而我們在代碼中使用的均是以上接口,實際上是哪個具體類開發(fā)人員并不清楚,因此只要針對以上接口我們寫個實現(xiàn)類來封裝需要的JAVA,OO,組件,框架,架構(gòu),模式,需求,領(lǐng)域設(shè)計,產(chǎn)品化,開源第4/15頁設(shè)計模式-01代

5、理模式http://hi.baidu.com/it實踐者/home功能,并且修改連接工廠獲取連接的代碼為自己實現(xiàn)的連接類就可以了,實現(xiàn)后的類圖如下:首先各個連接代理類實現(xiàn)接口的所有方法,實際上這里的實現(xiàn)方法很簡單,就是調(diào)用接口類中的方法。其次,對涉及SQL語句執(zhí)行的方法都進(jìn)行封裝,實現(xiàn)業(yè)務(wù)要求。最后,修改連接工廠類中獲取連接的代碼,將原來獲取的連接改為ConnectionProxy返回則可。對開發(fā)人員來說,依然調(diào)用的是原來的連接工廠獲取連接,返回值還是Connection,所有的調(diào)用方法均沒有任何改變。代碼示例:1、ConnectionProxy.javapackagecom.fan;i

6、mportjava.sql.*;/**JAVA,OO,組件,框架,架構(gòu),模式,需求,領(lǐng)域設(shè)計,產(chǎn)品化,開源第5/15頁設(shè)計模式-01代理模式http://hi.baidu.com/it實踐者/home*連接代理類*@authorIT實踐者*@bloghttp://hi.baidu.com/IT實踐者/home*/publicfinalclassConnectionProxyimplementsConnection{privateConnectionconn=null;/***構(gòu)造器*@paramc后續(xù)的方法實際都通過傳入的Connection來執(zhí)行*/publicConnectionPr

7、oxy(Connectionc){this.conn=c;}/***創(chuàng)建Statement*@returnStatement實際返回的是StatementProxy*/publicStatementcreateStatement()throwsSQLException{returnnewStatementProxy(this,conn.createStatement());}/***創(chuàng)建PreparedStatement*@retu

當(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)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。