/**
* 适配器模式
* 需求:一位阿富汗女子环游世界,首先她到中国爬长城顺便买了一个手机充电器给手机充电,接着打算去德国柏林找一个男朋友,可是到了德国她想给手机充电,
* 但是问题来了,在德国插座的插头只能是2个圆头插头,但是中国充电器的插头是2/3个扁平插头,所以无法使用。
*/
/**
* 测试
*/
public class Adapter {
public static void main(String[] args) {
//在德国使用德国充电器进行充电
DBSocketInterface dbSocket = new DBSocket();
dbSocket.DBCharge();
//在中国使用中国充电器进行充电
GBSocketInterface gbSocket = new GBSocket();
gbSocket.GBCharge();
//在德国使用中国充电器进行充电
SocketAdapter adapter = new SocketAdapter(gbSocket);
adapter.DBCharge();
}
}
/**
* 手机电源适配器,为了能够让阿富汗女子在德国正常使用中国的手机充电器。
*/
class SocketAdapter implements DBSocketInterface { //既然来到德国,就必须使用德国插座充电,实现德国插座接口
//因为该适配器是针对中国插座的,所以在创建适配器对象时必须传入中国插座接口的实现类对象
private GBSocketInterface gbSocket; //中国插座接口
public SocketAdapter(GBSocketInterface gbSocket) {
this.gbSocket = gbSocket;
}
//经过适配器的转换,中国的充电器就可以在德国的插座上正常充电了
@Override public void DBCharge() {
System.out.println("在德国,经过电源适配器转换*****");
gbSocket.GBCharge();
}
}
/**
* 德国插座(2个圆头的插头)
*/
interface DBSocketInterface {
//德国插座充电
void DBCharge();
}
/**
* 使用德国插座给手机充电
*/
class DBSocket implements DBSocketInterface {@Override public void DBCharge() {
System.out.println("2个圆头插头充电");
}
}
/**
* 中国插座(2/3个扁平的插头)
*/
interface GBSocketInterface {
//中国插座充电
void GBCharge();
}
/**
* 使用中国插座给手机充电
*/
class GBSocket implements GBSocketInterface {@Override public void GBCharge() {
System.out.println("2/3个扁平插头充电");
}
}
来源: http://www.cnblogs.com/1315925303zxz/p/7250648.html