适配器设计模式:让原本不能一起工作的的两个接口可以一起工作。
代码实例:
interface SourceA{
public void workA() ;
}
class SourceAImpl implements SourceA {
public void workA() {
System .out. println("电源A开始工作!" );
}
}
interface SourceB{
public void workB() ;
}
class SoruceBImpl implements SourceB {
public void workB() {
System .out. println("电源B开始工作!" );
}
}
class AdaptorSource implements SourceA ,SourceB{ //适配器实现了电源A,也实现了电源B,那么适配器既是电源A,也是电源B
private SourceA a ;//维护着电源A接口类型的字段
private SourceB b ;//维护着电源B接口类型的字段
//适配器实现了电源A,也实现了电源B,那么适配器既是电源A,也是电源B
public AdaptorSource (SourceA a ){
this. a=a ;
}
public AdaptorSource (SourceB b ){
this. b=b ;
}
//实现电源A的方法,适配器自身的实现方法
public void workA(){
b.workB ();//适配器自己的实现
}
//实现电源B的方法,适配器自身的实现方法
public void workB(){
a.workA ();//适配器自己的实现
}
}
public class AdaptorDemo2 {
public static void main(String [] args ) {
SourceA sourceA=new SourceAImpl ();//实例化电源A接口的实现类对象是为了让电源A工作
AdaptorSource adaptorA=new AdaptorSource(sourceA );//实例化适配器对象,是为了让A和B可以一起工作
Bwork(adaptorA );//电源B工作
SourceB sourceB=new SoruceBImpl ();//父类引用指向了实现子类的对象
AdaptorSource adaptorB=new AdaptorSource(sourceB );
Awork(adaptorB );
}
public static void Awork(SourceA a){//父类引用指向了子类对象,且只能调用父类中的成员
a .workA() ;
}
public static void Bwork(SourceB b){
b .workB() ; }
}