舉個(gè)老栗子
插兩個(gè)孔的插頭怎么能插入三個(gè)孔的插座呢,,這肯定都知道,中間加個(gè)轉(zhuǎn)接頭。
一頭被兩個(gè)孔的插一頭插入三個(gè)孔的插座就可以了。。 那么 這個(gè)轉(zhuǎn)接頭就是個(gè)適配器了。。。。

u=2292860942,612161708&fm=26&gp=0.jpg
下面通過(guò)代碼來(lái)展示一下這個(gè)邏輯:
先是三孔插座:
/**
* 三孔插座
*/
public class ThreeHoleSocket {
private ThreeHolePlug threeHolePlug;
public ThreeHoleSocket(ThreeHolePlug threeHolePlug){
this.threeHolePlug = threeHolePlug;
}
/**
* 充電
*/
public void charge(){
if(threeHolePlug != null){
threeHolePlug.insert();
}else{
System.out.println("插頭未插入");
}
}
}
三孔插座要插入一個(gè)三孔的插頭才能進(jìn)行充電,只要是三孔的不管什么電器都可以,所以我們有一個(gè)三孔插頭節(jié)接口:
public interface ThreeHolePlug {
void insert();
}
這個(gè)接口里有個(gè)插入方法,就是用來(lái)插入三孔插座的。
接下來(lái)就是一個(gè)兩孔插頭了:
/**
* 兩孔插頭
*/
public class TwoHolePlug {
public void charge(){
System.out.println("兩孔插頭--充電中");
}
}
兩孔插頭也有一個(gè)充電的方法,但得要插入才能充電,現(xiàn)在三孔插座需要的是一個(gè)三孔類型的插座,但這個(gè)兩孔的是不能夠插進(jìn)去的,這可怎么辦。。。。。。。
這個(gè)時(shí)候就得來(lái)個(gè)轉(zhuǎn)接頭適配器了,先看看代碼:
/**
* 一面三孔一面兩孔適配器
*/
public class ThreeHoleAdapter implements ThreeHolePlug{
private TwoHolePlug twoHolePlug;
public ThreeHoleAdapter(TwoHolePlug twoHolePlug){
this.twoHolePlug = twoHolePlug;
}
/**
* 插入
*/
@Override
public void insert() {
twoHolePlug.charge();
}
}
這個(gè)適配器實(shí)現(xiàn)了三孔插頭方法,所以他是可以插入三孔插座的,現(xiàn)在這個(gè)適配器傳進(jìn)來(lái)一個(gè)兩孔插頭,就相當(dāng)于兩孔插頭插入了這個(gè)適配器,只要等這個(gè)適配器再插入三孔插座,就可以充上電了,
下面看看咋充的電:
TwoHolePlug twoHolePlug = new TwoHolePlug();
//兩孔插頭插入適配器
ThreeHoleAdapter threeHoleAdapter = new ThreeHoleAdapter(twoHolePlug);
//適配器插入三孔插座
ThreeHoleSocket threeHoleSocket = new ThreeHoleSocket(threeHoleAdapter);
//開(kāi)始充電
threeHoleSocket.charge();
運(yùn)行后:

QQ截圖20200324211829.png
可以看到,兩孔的插頭成功插入并充上電了。。。
尤記得以前面試被問(wèn)到適配器模式,腦子一熱,心里想著一大堆,嘴上卻在阿巴阿巴阿巴阿巴阿巴

u=4231373203,681615851&fm=111&gp=0.jpg
希望寫過(guò)一遍能長(zhǎng)點(diǎn)記性!??!