适配器模式:

           适配器就相当于我们的转接头,比如手机充电器插头(小米和华为的手机充电器不能共用,这时候就可以给华为的充电器按一个转接头,就可以给小米手机充电)。

          同理,当一个类(充电器 HuaweiCharger)实现了某一个接口(华为 HuaweiPhone),但有时我们又需要去实现另一个接口(小米 XiaomiPhone),如果直接让充电器去实现小米接口,就需要实现小米接口中的方法,如果充电器类已经被打到一个包中,这时候修改就比较困难,也违反开闭原则(扩展开,修改闭)。因此我们就需要建立一个适配器类(HTXAdapter Huawei Transform Xiaomi Adapter)去实现小米接口,同时又继承自充电器类。

 1 /**
 2  * 华为手机接口
 3  * 
 4  * @author DennyZhao
 5  * @date 2017年6月20日
 6  * @version 1.0
 7  */
 8 public interface HuaweiPhone {
 9     
10     public int getSquarePlug();
11     
12     public int getSquareInterface();
13     
14     public void getAndroidSys();
15     
16     public void getHuaweiInput();
17     
18     public void getInterCpu();
19     
20     public void getInterBoard();
21 
22 }
HuaweiPhone
 1 /**
 2  * 小米手机
 3  * 
 4  * @author DennyZhao
 5  * @date 2017年6月20日
 6  * @version 1.0
 7  */
 8 public interface XiaomiPhone {
 9     
10     public int getCirclePlug();
11     
12     public int getCircleInterface();
13     
14     public void getAndroidPlusSys();
15     
16     public void getXiaomiInput();
17     
18     public void getAMDCpu();
19     
20     public void getAMDBoard();
21 }
XiaomiPhone
 1 /**
 2  * 华为充电器
 3  * 
 4  * @author DennyZhao
 5  * @date 2017年6月20日
 6  * @version 1.0
 7  */
 8 public class HuaweiCharger extends HuaweiPhoneImpl implements HuaweiPhone{
 9 
10     @Override
11     public int getSquarePlug() {
12         System.out.println("squarePlug----------");
13         return 0;
14     }
15 
16     @Override
17     public int getSquareInterface() {
18         System.out.println("squareInterface----------");
19         return 0;
20     }
21 
22 
23 }
HuaweiCharger
 1 /**
 2  * description:设计原则讲究扩展开,修改闭。因此当我们需要将一个类去实现另一个接口时,可以通过创建子类去实现这个接口。
 3  * 
 4  * @author DennyZhao
 5  * @date 2017年6月12日
 6  * @version 1.0
 7  */
 8 public class HTXAdapter extends HuaweiCharger implements XiaomiPhone{
 9 
10     /**
11      * 小米适配
12      */
13     @Override
14     public int getCirclePlug() {
15         int a = super.getSquarePlug();
16         return a+ 5;
17     }
18 
19     /**
20      * 小米适配
21      */
22     @Override
23     public int getCircleInterface() {
24         int b = super.getSquareInterface();
25         return b + 4;
26     }
27         @Override
28     public void getAndroidPlusSys() {
29         // TODO Auto-generated method stub
30         
31     }
32 
33     @Override
34     public void getXiaomiInput() {
35         // TODO Auto-generated method stub
36         
37     }
38 
39     @Override
40     public void getAMDCpu() {
41         // TODO Auto-generated method stub
42         
43     }
44 
45     @Override
46     public void getAMDBoard() {
47         // TODO Auto-generated method stub
48         
49     }
50 
51 }
HTXAdapter

通过上面的代码就可以知道,HTXAdaper实现了Xiaomi接口的所有方法,这样就不会污染HuaweiCharger了。随时不用可以去掉。插拔式结构。

 

posted on 2017-06-20 10:05  zhaoqiang1980  阅读(155)  评论(0编辑  收藏  举报