总结
1.适配器模式作为两个不兼容的接口之间的桥梁。主要是进行转换匹配,以复用现有的接口。
2.一般是实现一个接口,持有一个接口,或者进行对象组合,尽量不要使用继承,毕竟java是单继承的。
两个接口无法兼容,通过适配器来整合资源,从而实现两个接口的通信。
电脑
public interface ComputerFace {
void surf();
/**
* 联网接口
*/
void connectorA();
}
public class Computer implements ComputerFace{
private static final String portA="A";
public Computer(String portA) {
if (!"A".equals(portA)) {
throw new RuntimeException("与电脑A端口不匹配");
}
this.connectorA();
}
@Override
public void surf() {
System.out.println("网上冲浪");
}
@Override
public void connectorA() {
System.out.println("通过接口A连上电脑");
}
}
网线
/**
* 网线
*/
public interface DataCableFace {
/**
* 信息传递接口类型B
*/
void connectorB();
}
public class DataCable implements DataCableFace {
private static final String portB="B";
public DataCable(String portB) {
if (!"B".equals(portB)) {
throw new RuntimeException("与网线B端口不匹配");
}
this.connectorB();
}
@Override
public void connectorB() {
System.out.println("通过接口B连上网线");
}
}
适配器
/**
* 适配器
*/
public interface AdapterFace {
}
public class Adapter implements AdapterFace {
private static final String portA="A";
private static final String portB="B";
private static final String portC="C";
public ComputerFace computer;
public DataCableFace dataCable;
public Adapter(ComputerFace computer,DataCableFace dataCable) {
//连接网线
this.dataCable=dataCable;
//连接电脑
this.computer=computer;
System.out.println("连接完毕,可以上网了");
}
}
测试
@Test
void adapterTest(){
ComputerFace computer = new Computer("A");
DataCableFace dataCableFace=new DataCable("B");
Adapter adapter = new Adapter(computer,dataCableFace);
adapter.computer.surf();
}