Java适配器模式2 ---类适配器和对象适配器

本文详细介绍了适配器模式中的类适配器和对象适配器,并通过具体的代码实例展示了如何将220V电压适配为36V电压供手机充电的过程。

      适配器分为类适配器和对象适配器。类适配器是对类的适配,Adapter继承那个类或者接口也可以。对象适配器是对具体对象的适配,adapter 含有那个类的成员变量。但不管哪个适配器 最终Adapter 实现哪个接口,就把它看成那个接口的东西,比如本例都是实现36V的接口,就都可以把那个Adapter类看成36V的接口来用~

     还有第三类适配器,我一直思考的设计模式即设计思想,那么 适配器的最终想法是对 一个接口或者具体类的适配成另一个接口 ,那么如果被适配的接口和适配成的接口是同一个接口还算是适配器模式吗? 答案是 算 ~ 这个就相当于一个Adapter类实现了一个接口,方法里面添加了一些代码,完善了接口类~   或者Adapter里面含有一个接口的成员变量,然后再方法里面调用  这两种情况都不算多

no1类适配器

/**
  * 220V电压
  */
public class HighV220Impl  {
  public void showPower220V() {
  System.out.println("220V电压");
  }
}
/**
  * 36V电压 适配的那个
  */
public interface LowV36 {
   void showPower36V();
}

/**
 * 36V电压接口实现类
 */
public class LowV36Impl implements LowV36{

    @Override
    public void showPower36V() {
        System.out.println("36V电压");
    }
}

public class Phone {
     public void change(LowV36 lowV36){
    lowV36.showPower36V();
    System.out.println("手机正在充电");
     }
}

 

public class PowerAdapter extends HighV220Impl implements LowV36{
  @Override
  public void showPower36V() {
     super.showPower220V();
     System.out.println("适配一下子");
     System.out.println("36V电压");
  }

 

public class Test {
  public static void main(String[] args){
     //假设现有一个手机的对象,手机对象需要充电 36V电压
    Phone phone=new Phone();
    //设配器出场
    PowerAdapter powerAdapter=new PowerAdapter();
    //手机充电
   phone.change(powerAdapter);

  }
}

运行结果:

220V电压
适配一下子
36V电压
手机正在充电

 

 

 

 

 

no2 对象适配器

/**
 * 220V 电压 被适配的那个
 */
public interface HighV220 {
    void showPower220V();
}
 

/**
 * 36V电压 适配的那个
 */
public interface LowV36 {
    void showPower36V();
}
 

/**
 * 220V电压接口实现类
 */
public class HighV220Impl implements HighV220{
    @Override
    public void showPower220V() {
     System.out.println("220V电压");
    }
}
 

/**
 * 36V电压接口实现类
 */
public class LowV36Impl implements LowV36{

    @Override
    public void showPower36V() {
        System.out.println("36V电压");
    }
}
 

public class PowerAdapter implements LowV36{
    HighV220 highV220;
    public void getPower(HighV220 highV220){
         this.highV220=highV220;
    }
    @Override
    public void showPower36V() {

          highV220.showPower220V();
          System.out.println("适配一下子");
          System.out.println("36V电压");
    }
}
/**
 * 手机 需要36V电压
 */
public class Phone {
    public void change(LowV36 lowV36){
        lowV36.showPower36V();
        System.out.println("手机正在充电");
    }
}
 

public class Test {
    public static void main(String[] args){
          //假设现有一个手机的对象,手机对象需要充电 36V电压
        Phone phone=new Phone();
        //假设现在有220V电压
        HighV220 highV220=new HighV220Impl();

        //设配器出场
        PowerAdapter powerAdapter=new PowerAdapter();
       //适配器得到220V电压
        powerAdapter.getPower(highV220);
        //手机充电
       phone.change(powerAdapter);

    }
}
 

 运行结果:

220V电压
适配一下子
36V电压
手机正在充电

 
--------------------- 
作者:萌懵 
来源:优快云 
原文:https://blog.youkuaiyun.com/chenshuaiforwork/article/details/90752807 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值