读书人

适配器(2)

发布时间: 2012-11-08 08:48:12 作者: rapoo

适配器(二)

接口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!}
}
总结:正向反向均可适配。

读书人网 >软件架构设计

热点推荐