举个老栗子
插两个孔的插头怎么能插入三个孔的插座呢,,这肯定都知道,中间加个转接头。
一头被两个孔的插一头插入三个孔的插座就可以了。。 那么 这个转接头就是个适配器了。。。。
![](https://img.haomeiwen.com/i20398968/32a6b88408e2589b.jpg)
下面通过代码来展示一下这个逻辑:
先是三孔插座:
/**
* 三孔插座
*/
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("插头未插入");
}
}
}
三孔插座要插入一个三孔的插头才能进行充电,只要是三孔的不管什么电器都可以,所以我们有一个三孔插头节接口:
public interface ThreeHolePlug {
void insert();
}
这个接口里有个插入方法,就是用来插入三孔插座的。
接下来就是一个两孔插头了:
/**
* 两孔插头
*/
public class TwoHolePlug {
public void charge(){
System.out.println("两孔插头--充电中");
}
}
两孔插头也有一个充电的方法,但得要插入才能充电,现在三孔插座需要的是一个三孔类型的插座,但这个两孔的是不能够插进去的,这可怎么办。。。。。。。
这个时候就得来个转接头适配器了,先看看代码:
/**
* 一面三孔一面两孔适配器
*/
public class ThreeHoleAdapter implements ThreeHolePlug{
private TwoHolePlug twoHolePlug;
public ThreeHoleAdapter(TwoHolePlug twoHolePlug){
this.twoHolePlug = twoHolePlug;
}
/**
* 插入
*/
@Override
public void insert() {
twoHolePlug.charge();
}
}
这个适配器实现了三孔插头方法,所以他是可以插入三孔插座的,现在这个适配器传进来一个两孔插头,就相当于两孔插头插入了这个适配器,只要等这个适配器再插入三孔插座,就可以充上电了,
下面看看咋充的电:
TwoHolePlug twoHolePlug = new TwoHolePlug();
//两孔插头插入适配器
ThreeHoleAdapter threeHoleAdapter = new ThreeHoleAdapter(twoHolePlug);
//适配器插入三孔插座
ThreeHoleSocket threeHoleSocket = new ThreeHoleSocket(threeHoleAdapter);
//开始充电
threeHoleSocket.charge();
运行后:
![](https://img.haomeiwen.com/i20398968/bd20a35c3eafc3ab.png)
可以看到,两孔的插头成功插入并充上电了。。。
尤记得以前面试被问到适配器模式,脑子一热,心里想着一大堆,嘴上却在阿巴阿巴阿巴阿巴阿巴
![](https://img.haomeiwen.com/i20398968/2af31bb9c6ba94ef.jpg)
希望写过一遍能长点记性!!!
网友评论