一、理解

(1)、适配器:说到适配器我们不得不提我们的手机充电器,我们的家用电源为220v,而手机的工作电压假设为5v,这就造成手机无法直接使用220v的家用电,那么充电器除了充电以外还提供将220v电压与手机工作电压之间的适配工作。那么适配器的功能就是将原本某事物与使用者要求不匹配变成匹配。

官方解释:将一个类的接口转化成客户希望的另一接口。

(1)、分类:类适配器、对象适配器器、接口适配器
类适配器:改变某类创建的对象的对外特征,使符合使用者的适配要求,继承源类实现目标接口

对象适配器:对某一对象进行适配,让其改变对外特征。包含源对象引用实现目标接口

接口适配器:改变某一类实现的某一接口让其接口适配客户需求。这里感觉和官方解释的适配器一样,所以官方默认为接口适配器。包含源对象上转型对象引用,实现目标接口

二、代码实现

(1)类适配器

以电源 220v适配到5v为例:

public class dy220v {
       int dy=220v;
       public int getdy220v() {
            return dy;
       {
}

public interface dy5v {
       public int getdy5v();
}

public class adapter extends dy220v implements dy5v {    //继承类源类实现目标接口
        public void getdy5v() {
               int dy = getdy220v();
               dy = dy/44;
               return dy;
        }
}

public class test {
     public static void main(Stying[] args){
            dy5v dy =new adapter();
            System.out.println(dy.get5vdy());
     }
}

(2)对象适配器:

还以电源为例:

public calss adapter implements dy5v {
       dy220v dy220;               //适配器里面由适配源对象,即对象适配器适配源是一个对象
       public void setadapter(dy220v dy) {     //设置要适配的对象
              this.dy220=dy;
       }
       public int getdy5v() {
              return dy220.getdy220v()/44;
       }
}

public calss test {
       public static void main(String[] args) {
              dy220v dy220 =new dy220v();
              adapter dy5v = new adapter();
              dy5v.setadapter(dy220);
              System.out.println(dy5v.getdy5v());
       }
}

(3)接口适配器

public calss dy {               //源接口,这里不是真的接口,理解为一组类的特征抽象,客户不适配的一组特征
       public int getdy() {
              return 220v;
       }
}

public interface dy5v {   //  目标接口,客户希望的额接口
       public int get5v();
}

public calss dy220v extends dy {
       public int getdy() {
              return 220;
       }
}

public class dy110v extends dy {
       public int getdy() {
              return 110;
       }
}

public adapter implements dy5v {   //适配器类
       dy dy;                      //里面也有源对象
       public void setadapter(dy dy) {   //设置源对象
              this.dy=dy;
       }
       public int get5v() {          //改造源对象的对外特征,
             int x = dy.getdy();
             return x/(x/5);
       }
}

public class test {
      public static void main(String[] args) {
              dy220v dy220 = new dy220v();
              dy110v dy110 = new dy110v();
              adapter dy5v = new adapter();
              dy5v.setadapter(dy220);
              System.out.println(dy5v.get5v());
              dy5v.setadapter(dy110);
              System.out.println(dy5v.get5v());
      }
}