A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


适配器设计模式:让原本不能一起工作的的两个接口可以一起工作。
代码实例:
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() ;                                                                        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马