對(duì)象適配器模式

對(duì)象適配器模式

ID:47535023

大小:52.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-01-13

對(duì)象適配器模式_第1頁(yè)
對(duì)象適配器模式_第2頁(yè)
對(duì)象適配器模式_第3頁(yè)
對(duì)象適配器模式_第4頁(yè)
對(duì)象適配器模式_第5頁(yè)
對(duì)象適配器模式_第6頁(yè)
資源描述:

《對(duì)象適配器模式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、實(shí)驗(yàn)項(xiàng)目名稱:對(duì)象適配器模式(所屬課程:軟件設(shè)計(jì)模式)學(xué)院:計(jì)算機(jī)科學(xué)與信息工程學(xué)院專業(yè)班級(jí):軟件工程13-1姓名:王會(huì)芳學(xué)號(hào):13031210130實(shí)驗(yàn)日期:2016年4月3實(shí)驗(yàn)地點(diǎn):A06404合作者:指導(dǎo)教師:高原本實(shí)驗(yàn)項(xiàng)目成績(jī):教師簽字:日期:一、實(shí)驗(yàn)?zāi)康呐c要求1.練習(xí)使用對(duì)象適配器模式。設(shè)計(jì)相關(guān)的模擬場(chǎng)景并進(jìn)行實(shí)施,驗(yàn)證模式特性,掌握其優(yōu)缺點(diǎn)。2.實(shí)驗(yàn)結(jié)束后,對(duì)相關(guān)內(nèi)容進(jìn)行總結(jié)。二、實(shí)驗(yàn)內(nèi)容1.模式應(yīng)用場(chǎng)景說(shuō)明某系統(tǒng)需要提供一個(gè)加密模塊,將用戶信息(如密碼等機(jī)密信息)機(jī)密之后再存儲(chǔ)在數(shù)據(jù)庫(kù)

2、中,系統(tǒng)已經(jīng)定義好了數(shù)據(jù)庫(kù)操作類。為了提高開(kāi)發(fā)效率,現(xiàn)需要重用已有的加密算法,這些算法封裝在一些由第三方提供的類中,有些甚至沒(méi)有源代碼。使用適配器模式設(shè)計(jì)該加密模塊,實(shí)現(xiàn)在不修改現(xiàn)有類的基礎(chǔ)上重用第三方加密方法。2.應(yīng)用場(chǎng)景類圖通過(guò)分析,可使用對(duì)象適配器模式實(shí)現(xiàn)該系統(tǒng)設(shè)計(jì),該實(shí)例類圖如圖1所示。DataOperation{abstract}-password:String+setPassword(Stringpassword):void+getPassword():String+doEncrypt(

3、intkey,Stringps):StringCipherAdapter-cipher:Caesar+CipherAdapter()+doEncrypt(intkey,Stringps):StringNewCipherAdapter-cipher:NewCipher+NewCipherAdapter()+doEncrypt(intkey,Stringps):StringCaesar+doEncrypt(intkey,Stringps):StringNewCipher+doEncrypt(intkey

4、,Stringps):Stringciphercipher圖1加密適配器類圖3.實(shí)現(xiàn)代碼與解釋(1)目標(biāo)抽象類DataOperation(數(shù)據(jù)操作類)publicabstractclassDataOperation{privateStringpassword;publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetPassword(){returnthis.password;}publicabstrac

5、tStringdoEncrypt(intkey,Stringps);}DataOperation類中包含了抽象方法doEncrypt(),客戶端針對(duì)抽象類DataOperation進(jìn)行編程,在客戶端代碼中調(diào)用DataOperation的doEncrypt()實(shí)現(xiàn)數(shù)據(jù)加密。(2)適配者類Caesar(數(shù)據(jù)加密)publicclassCaesar{publicStringdoEncrypt(intkey,Stringps){Stringes="";for(inti=0;i

6、){charc=ps.charAt(i);if(c>='a'&&c<='z'){c+=key%26;if(c>'z')c-=26;if(c<'a')c+=26;}if(c>='A'&&c<='Z'){c+=key%26;if(c>'Z')c-=26;if(c<'Z')c+=26;}es+=c;}returnes;}}Caesar類是一個(gè)由第三方提供的數(shù)據(jù)加密類,該類定義為final類,無(wú)法繼承。因此本實(shí)例不能通過(guò)類適配器來(lái)實(shí)現(xiàn),只能使用對(duì)象適配器實(shí)現(xiàn)。客戶端在使用時(shí)無(wú)須關(guān)心Caesar類的源代碼,甚

7、至無(wú)法獲得該類的源代碼,只有編譯后的class文件。(3)適配器類CipherAdapter(加密適配器類)publicclassCipherAdapterextendsDataOperation{privateCaesarcipher;publicCipherAdapter(){cipher=newCaesar();}publicStringdoEncrypt(intkey,Stringps){returncipher.doEncrypt(key,ps);}}CipherAdapter類充當(dāng)適配器

8、角色,由于Caesar類無(wú)法繼承,本實(shí)例采用對(duì)象適配器模型,在CipherAdapter類中定義一個(gè)Caesar類型的成員對(duì)象,在CipherAdapter類的構(gòu)造函數(shù)實(shí)例化Caesar對(duì)象,CipherAdapter與Caesar類之間是組合關(guān)聯(lián)關(guān)系。(4)XML操作工具類XMLUtilimportjavax.xml.parsers.*;importorg.w3c.dom.*;importorg.xml.sax.SAXException;importjava.io.

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

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

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