zoukankan      html  css  js  c++  java
  • 构建模式--Adapter模式(JAVA)

    适配器模式:

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

              同理,当一个类(充电器 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了。随时不用可以去掉。插拔式结构。

  • 相关阅读:
    [posix]Posix多线程编程
    [Makefile]多文件的通用Makefile
    表格花式效果
    JavaScript实现按键精灵
    JavaScript中几个相似方法对比
    谨慎能捕千秋蝉(三)——界面操作劫持与HTML5安全
    谨慎能捕千秋蝉(二)——CSRF
    日月如梭,玩转JavaScript日期
    Wireshark网络抓包(四)——工具
    Wireshark网络抓包(三)——网络协议
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/7052916.html
Copyright © 2011-2022 走看看