真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

web設(shè)計模式的適配器模式有什么用

本文小編為大家詳細介紹“web設(shè)計模式的適配器模式有什么用”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“web設(shè)計模式的適配器模式有什么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

10年積累的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有保定免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

意圖

將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

適配器這個名稱非常好,讀者可以考慮電源插頭轉(zhuǎn)換器,接下來我們會不斷地重復(fù)這個類比。

動機

有時,為復(fù)用而設(shè)計的工具箱類不能夠被復(fù)用的原因僅僅是因為它的接口與專業(yè)應(yīng)用領(lǐng)域所需要的接口不匹配。

提供一個可以復(fù)用的類庫或者函數(shù)庫一般來講并不是一個很難的事情,難的是無法預(yù)知將來的使用方式,也就是說無法為將來準(zhǔn)備接口。也就是說,當(dāng)我們使用已有類庫的時候,接口一般都不會正好和我們的需求想匹配。

例如,有一個繪圖編輯器,這個編輯器允許用戶繪制和排列基本圖元(線、多邊型和正文等)生成圖片和圖表。這個繪圖編輯器的關(guān)鍵抽象是圖形對象。圖形對象有一個可編輯的形狀,并可以繪制自身。圖形對象的接口由一個稱為Shape的抽象類定義。繪圖編輯器為每一種圖形對象定義了一個Shape的子類:LineShape類對應(yīng)于直線,PolygonShape類對應(yīng)于多邊型,等等。

假設(shè)有要開發(fā)一個圖形編輯器,可以支持各種圖形的編輯。

像LineShape和PolygonShape這樣的基本幾何圖形的類比較容易實現(xiàn),這是由于它們的繪圖和編輯功能本來就很有限。但是對于可以顯示和編輯正文的TextShape子類來說,實現(xiàn)相當(dāng)困難,因為即使是基本的正文編輯也要涉及到復(fù)雜的屏幕刷新和緩沖區(qū)管理。同時,成品的用戶界面工具箱可能已經(jīng)提供了一個復(fù)雜的TextView類用于顯示和編輯正文。理想的情況是我們可以復(fù)用這個 TextView類以實現(xiàn)TextShape類,但是工具箱的設(shè)計者當(dāng)時并沒有考慮Shape的存在,因此TextView和Shape對象不能互換。

開發(fā)任何一個具有一定規(guī)模軟件,總會有些功能要在自己實現(xiàn)和使用已有代碼之間選擇。而這個選擇的結(jié)果一般受到幾個因素的影響:首先自己實現(xiàn)的難度,如實現(xiàn)比較簡單,一般都會選擇自己實現(xiàn),雖然要花一點時間,但是程序員可以掌控一切。如果實現(xiàn)很困難,就會考慮使用現(xiàn)有類庫等。一般來說引用其他的庫就意味著編譯條件的復(fù)雜化,調(diào)試的復(fù)雜化等問題。理所當(dāng)然,使用的類庫不會正好具有我們需要的接口。

一個應(yīng)用可能會有一些類具有不同的接口并且這些接口互不兼容,在這樣的應(yīng)用中象TextView這樣已經(jīng)存在并且不相關(guān)的類如何協(xié)同工作呢?我們可以改變 TextView類使它兼容Shape類的接口,但前提是必須有這個工具箱的源代碼。然而即使我們得到了這些源代碼,修改TextView也是沒有什么意義的;因為不應(yīng)該僅僅為了實現(xiàn)一個應(yīng)用,工具箱就不得不采用一些與特定領(lǐng)域相關(guān)的接口。

當(dāng)我們需要使用的類庫不具有我們希望的接口時應(yīng)該怎么做呢?如果已有類庫是我們自己的代碼,就會有相當(dāng)比例的開發(fā)者會選擇修改已有庫的接口以適用新用法。這并不是一個明智的做法:因為這會造成代碼的重復(fù),不符合DRY(Don't Repeat Yourself)原則。

我們可以不用上面的方法,而定義一個TextShape類,由它來適配TextView的接口和Shape的接口。我們可以用兩種方法做這件事: 1) 繼承S h a p e類的接口和TextView的實現(xiàn),或2) 將一個TextView實例作為TextShape的組成部分,并且使用TextView的接口實現(xiàn)TextShape。這兩種方法恰恰對應(yīng)于Adapter模式的類和對象版本。我們將TextShape稱之為適配器Adapter。

推薦的方法是定義一個中間層,從接口的角度來講,它復(fù)合新軟件的架構(gòu)需求,它就是一個新架構(gòu)下的一個普通子類,具備所需的接口;從實現(xiàn)的角度來講,它使用已有類庫的功能,不需要從頭實現(xiàn)。這里使用已有庫的方法兩個:一個是IS A方式,即繼承的方式;另一個是HAS A方式機組合的方式。這兩種方式差不多使面向?qū)ο笤O(shè)計永遠的話題,目前的趨勢是使用組合的方式。但是無論哪種方式,都屬于適配器模式。

讀到這里,這篇“web設(shè)計模式的適配器模式有什么用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁標(biāo)題:web設(shè)計模式的適配器模式有什么用
文章URL:http://weahome.cn/article/giseeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部