定义:
适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
示例:
比如,水货的手机充电器插头是欧美标准(大头插座),中国的插座是小的,如果要是充电器工作,必须有个转换插头(小插座不具备给大插头充电的功能),其功能和adapater相同。
其中,大充电器是目标类,小插座是被适配的对象,转换插头是适配器。
使用场合:
当需要已知类A和类B的功能,且类A和类B功能不完全满足要求,需要修改,但又不能修改A,B源码时,可将A,B类以继承和组合的方式引入适配器类中,然后直接使用适配器类来完成想要的功能。
public class test7 {
public static void main(String[] args) {
//client 客户端
//使用适配器类给大插头充电
BigPlug bp=new SmallSocketAdapter();
bp.getElec();
}
}
//target
//目标类,大插头需要充电
class BigPlug{
void getElec(){
System.out.println("我在大插座上充电");
}
}
//adaptee 被适配的对象
//想要使用小插座这个类的充电的方法,但此方法的参数不符合要求,因此需要适配
class SmallSocket{
void supplyElecToSmallPlug(SmallPlug smallPlug){
System.out.println("我是小插座,小插头可以插上,充电中。。。");
}
}
class BigSocket{}
class SmallPlug{}
//adapter 适配器
//通过它将大插头转换成小插头,以在小插座上充电
class SmallSocketAdapter extends BigPlug{
SmallSocket ss=new SmallSocket();
void getElec(){
SmallPlug sp=BigPlugToSmallPlug(this);
ss.supplyElecToSmallPlug(sp);
}
private SmallPlug BigPlugToSmallPlug(BigPlug bigPlug) {
//TODO 将转换为小插头
return null;
}
}