c. 適配器模式
我的筆記本是港貨,它的插頭與我們常用的插座不一樣,所有我出差的時(shí)候我必須帶一個(gè)適配器,才能使用不同地方的插座。這是一個(gè)對(duì)適配器模式最經(jīng)典的描述。當(dāng)我們?cè)O(shè)計(jì)的系統(tǒng)要與其它系統(tǒng)交互,或者我們?cè)O(shè)計(jì)的模塊要與其它模塊交互時(shí),這種交互可能是調(diào)用一個(gè)接口,或者交換一段數(shù)據(jù),接受方常常因發(fā)送方對(duì)協(xié)議的變更而頻繁變更。這種變更,可能是接受方來(lái)源的變更,比如原來(lái)是 A 系統(tǒng),現(xiàn)在變成 B 系統(tǒng)了;也可能是接受方自身的代碼變更,如原來(lái)的接口現(xiàn)在增加了一個(gè)參數(shù)。由于發(fā)送方的變更常常導(dǎo)致接受方代碼的不穩(wěn)定,即頻繁跟著修改,為接受方的維護(hù)帶來(lái)困難。
遇到這樣的問(wèn)題,一個(gè)有經(jīng)驗(yàn)的程序員馬上想到的就是采用適配器模式。在設(shè)計(jì)時(shí),我方的接口按照某個(gè)協(xié)議編寫(xiě),并且保持固定不變。然后,在與真正對(duì)方接口時(shí),在前段設(shè)計(jì)一個(gè)適配器類(lèi),一旦對(duì)方協(xié)議發(fā)生變更,我可以換個(gè)適配器,將新協(xié)議轉(zhuǎn)換成原協(xié)議,問(wèn)題就解決了。適配器模式應(yīng)當(dāng)包含一個(gè)接口和它的實(shí)現(xiàn)類(lèi)。接口應(yīng)當(dāng)包含一個(gè)本系統(tǒng)要調(diào)用的方法,而它的實(shí)現(xiàn)類(lèi)分別是與 A 系統(tǒng)接口的適配器、與 B 系統(tǒng)接口的適配器...
?
?
?
我曾經(jīng)在一個(gè)項(xiàng)目中需要與另一個(gè)系統(tǒng)接口,起初那個(gè)系統(tǒng)通過(guò)一個(gè)數(shù)據(jù)集的方式為我提供數(shù)據(jù),我寫(xiě)了一個(gè)接收數(shù)據(jù)集的適配器;后來(lái)改為用一個(gè) XML 數(shù)據(jù)流的形式,我又寫(xiě)了一個(gè)接收 XML 的適配器。雖然為我提供數(shù)據(jù)的方式不同,但是經(jīng)過(guò)適配器轉(zhuǎn)換后,輸出的數(shù)據(jù)是一樣的。通過(guò)在 spring 中的配置,我可以靈活地切換到底是使用哪個(gè)適配器。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
