一、概述
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
二、情景
比如手机充电,平时手机充电都用三角插头或者两角插头,有一天,买了个港版的手机,正好家里没有能适合港版充电器的插座,因此,我们就要淘换一个适配器,以达到能给港版手机充电的要求。这其中包含适配器对象,国标充电器,港版充电器,家里的插座共同组成了这个场景。
三、代码
1.国标充电器接口
public interface GuoChargerInterface {
void chargerWithGuo();
}
2.国标充电器
public class GuoSocket implements GuoChargerInterface{
@Override
public void chargerWithGuo() {
System.out.println("用国行充电器充电");
}
}
3.港版充电器接口
public interface GangChargerInterface {
void chargerWithGang();
}
4.港版充电器
public class GangSocket implements GangChargerInterface{
@Override
public void chargerWithGang() {
System.out.println("港行充电器充电");
}
}
5.国标插座
public class SocketTarget {
private GuoChargerInterface mAdapter;
public SocketTarget(){
}
public void setAdapter(GuoChargerInterface mAdapter) {
this.mAdapter = mAdapter;
}
public void charger(){
mAdapter.chargerWithGuo();
}
}
6.适配器类
public class SocketAdapter implements GuoChargerInterface{
private GangChargerInterface gangChargerInterface;
public SocketAdapter(GangChargerInterface gangChargerInterface) {
this.gangChargerInterface = gangChargerInterface;
}
@Override
public void chargerWithGuo() {
gangChargerInterface.chargerWithGang();
}
}
7.测试类
public class Test {
public static void main(String[] args) {
GangChargerInterface gangChargerInterface = new GangSocket();
SocketTarget socketTarget = new SocketTarget();
SocketAdapter socketAdapter = new SocketAdapter(gangChargerInterface);
socketTarget.setAdapter(socketAdapter);
socketTarget.charger();
}
}