适配器(二)接口A:packagecom.jerry.design.adapter2.imp?publicinterfaceInterfaceA {?publicvoidtestA()
适配器(二)
接口A:
packagecom.jerry.design.adapter2.imp;
?
publicinterfaceInterfaceA {
?
publicvoidtestA();
?
}
接口B:
packagecom.jerry.design.adapter2.imp;
?
publicinterfaceInterfaceB {
?
publicvoidtestB();
?
}
实现类A:
packagecom.jerry.design.adapter2.impl;
?
importcom.jerry.design.adapter2.imp.InterfaceA;
?
?
publicclassImplAimplementsInterfaceA{
?
@Override
publicvoidtestA() {
?
System.out.println(" i am do something as InterfaceA!");
?
}
?
}
?
实现类B:
?
packagecom.jerry.design.adapter2.impl;
?
importcom.jerry.design.adapter2.imp.InterfaceB;
?
publicclassImplBimplementsInterfaceB{
?
@Override
publicvoidtestB() {
?
System.out.println(" i am do something as InterfaceB!");
?
}
?
}
实现类C:
package com.jerry.design.adapter2.impl;
import com.jerry.design.adapter2.imp.InterfaceA;import com.jerry.design.adapter2.imp.InterfaceB;
public class ImplC implements InterfaceB,InterfaceA{
private InterfaceA implA;private InterfaceB implB;public ImplC(InterfaceA implA,InterfaceB implB){this.implA = implA;this.implB = implB;}@Overridepublic void testB() {implA.testA();}@Overridepublic void testA() {implB.testB();}
}
测试类:
package com.jerry.design.adapter2.client;
import com.jerry.design.adapter2.imp.InterfaceA;import com.jerry.design.adapter2.imp.InterfaceB;import com.jerry.design.adapter2.impl.ImplA;import com.jerry.design.adapter2.impl.ImplB;import com.jerry.design.adapter2.impl.ImplC;
public class Test {public static void main(String[] args) {InterfaceA implA = (InterfaceA) new ImplA();InterfaceB implB = (InterfaceB) new ImplB();InterfaceA implC = (InterfaceA) new ImplC(implA,implB);InterfaceB implD = (InterfaceB) new ImplC(implA,implB);implC.testA();// i am do something as InterfaceB!implD.testB();// i am do something as InterfaceA!}
}
总结:正向反向均可适配。