放棄該放棄的是無奈,放棄不該放棄的是無能,不放棄該放棄的是無知,不放棄不該放棄的是執著。
願自己能在自己所熱愛的道路上越走越遠。
介面卡模式將乙個類的介面轉換成另一種介面,讓原本不相容的類可進行相容. 並且從使用者的角度來看適配者是解耦的, 系統設計的時候遮蔽了被適配者的內部實現細節. 使用者只需要呼叫介面卡轉換出來的介面方法即可,
介面卡模式分為介面介面卡,類介面卡、物件介面卡. 三種型別,對於我們自己來說可以根據自己的實際情況來選擇使用哪種介面卡模式.
一、介面介面卡
介面介面卡需要提供乙個被適配的介面,並且提供要被適配的方法.
/**
* 被適配介面: 下面主要說明介面介面卡模式 .
* * @author zhenxinma
* @date 2020/8/24 14:10
*/public
inte***ce
inte***ce0
然後就是最主要的介面介面卡類了, 該類實現了上面的被適配的介面,並且實現了其所有的方法,但是方法體是空實現,不去做任何實現,把實現得權利交給客戶端.
/**
* 對介面進行適配的,且實現了其所有的預設方法, 但是不進行具體的方法實現.
* * 具體的方法實現由客戶端(方法呼叫者)進行實現.
* 方法的具體實現不是由介面卡類進行解決,而是用過客戶端進行解決.
* * @author zhenxinma
* @date 2020/8/24 14:11
*/public
class
inte***ceadaptor
implements
inte***ce0
@override
public
voidf2(
)@override
public
voidf3(
)}
最重要的就是客戶端(也是被適配介面中方法的具體實現)
public
class
mainclient};
adaptor.f1(
);}}
上面雖然**和注釋很少,但要注重理解.
介面卡模式經常用來做舊系統的公升級改造, 以及系統的維護.
二、類介面卡
被適配類的標準介面
/**
* 被要求的類. 被適配類的要求.
* * @author zhenxinma
* @date 2020/8/16 16:08
*/public
inte***ce
voltage5v
**被適配者,對方法進行適配. 以達到自己的要求. **
/**
* 被適配者.
* * @author zhenxinma
* @date 2020/8/16 16:00
*/public
class
voltage220v
}
介面卡類,來對類進行適配
核心是通過繼承父類和實現乙個目標介面來進行適配 . 從而達到自己的要求.
/**
* 電壓介面卡.
* * 該介面卡通過繼承被適配的介面的某種實現並且實現了被適配介面.
* 通過呼叫父類已經實現了的方法來對介面卡類的要求進行完善,從而達到對目標進行適配.
* 個人感覺該中方法對其盡心適配和對介面進行適配很類似.
* * @author zhenxinma
* @date 2020/8/16 16:13
*/public
class
voltageadapter
extends
voltage220v
implements
voltage5v
}
客戶端
/**
* 客戶端以及使用該介面卡的類.
* 當前客戶端手機僅僅支援55v的電壓.
* * @author zhenxinma
* @date 2020/8/16 16:16
*/public
class
phone
public
void
charge()
else
}}
**測試: **
/**
* @author zhenxinma
* @date 2020/8/16 21:48
*/public
class
client
}
類介面卡就是將乙個類現在已經不適合用了,也不能和說是不使用了吧,就是要求返回的值不符合現在系統的要求,現在為了讓這個類符合系統設計的要求,我們對其進行了適配. 到最後我們也不需要對該類進行刪除,也不需要重新寫乙個全新的類。我們只需要新增乙個介面卡類即可 .
三、物件介面卡
被介面卡類的標準介面
/**
* 被介面卡類的介面(標準);
* * @author zhenxinma
* @date 2020/8/24 20:43
*/public
inte***ce
voltage220v
被適配類的具體實現
/**
* 被適配類的具體實現.
* * @author zhenxinma
* @date 2020/8/24 20:44
*/public
class
voltage220vimpl
implements
voltage220v
}
介面卡類
/**
* @author zhenxinma
* @date 2020/8/24 20:54
*/public
class
voltageadapter
implements
voltage5v
@override
public
intoutput5v()
return dir;
}}
使用方
public
class
phone
else
}}
測試方
/**
* 測試 .
* * @author zhenxinma
* @date 2020/8/24 20:43
*/public
class
mainclient
}
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式之 介面卡模式
1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...
設計模式之介面卡模式
介面卡模式定義 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。簡單定義 封裝物件,並提供不同的介面。簡單例子 鴨子介面 package headfirst.adapter.ducks public inte ce duck 具體鴨子 package headfi...