java学习

适配器模式

将一个类的接口转换成客户希望的另一个接口,Adapter模式使得由于接口不兼容不能一起工作的那些类可以一起工作

角色分析

  • 目标接口:客户所期待的接口(usb接口)
  • 需要适配的类(网线接口)
  • 适配器:包装一个需要适配的对象(包装网线),把原接口转换成目标对象(usb转接器)

对象适配器

  • 一个对象适配器可以把多个不同的适配者适配到同一目标

  • 可以适配适配者的子类

    package com.guo;
    //要被适配的类:网线
    public class Adaptee {
        public void request(){
            System.out.println("连接网线上网");
        }
    }
    
    package com.guo;
    //真正的适配器 需要连接USB,连接网线
    //适配器继承了网线,直接就有上网的功能
    
    //1.继承:类适配器,一个类只能适配一个,因为单继承
    //2.组合:对象适配器,常用
    public class Adapter extends Adaptee implements NetToUsb{
        @Override
        public void handlerequest() {
            super.request();
        }
    }
    
    package com.guo;
    //客户端类:想上网,插不上
    public class Computer {
        //电脑需要来凝结上转接器才可以上网
        public void net(NetToUsb adapter){
            //上网的具体实现,找一个转接头
            adapter.handlerequest();
        }
         public static void main(String[] args){
            //电脑、适配器、网线
             Computer computer = new Computer(); //电脑
             Adaptee adaptee = new Adaptee();   //网线
             Adapter adapter = new Adapter();  //适配器
             //Adapter2 adapter = new Adapter2(adaptee);  //适配器
             computer.net(adapter);
         }
    
    
    }
    
    
    package com.guo;
    //接口转换器的抽象实现
    public interface NetToUsb {
    
        //作用:处理请求,网线——usb
        public void handlerequest();
    }
    
    

类适配器

  • 一次做多只能适配一个适配者类,不能同时适配多个适配者
  • 类适配器模式中的目标抽象类只能为接口
package com.guo;
//网线应该是接入进来的
//2.组合:对象适配器
public class Adapter2 implements NetToUsb{
    private Adaptee adaptee;
    //构造器里面传递

    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void handlerequest() {
       adaptee.request();
    }
}
package com.guo;
//客户端类:想上网,插不上
public class Computer {
    //电脑需要来凝结上转接器才可以上网
    public void net(NetToUsb adapter){
        //上网的具体实现,找一个转接头
        adapter.handlerequest();
    }
     public static void main(String[] args){
        //电脑、适配器、网线
         Computer computer = new Computer(); //电脑
         Adaptee adaptee = new Adaptee();   //网线
         Adapter adapter = new Adapter();  //适配器
         //Adapter2 adapter = new Adapter2(adaptee);  //适配器
         computer.net(adapter);
     }


}

GUI编程,存在大量适配器,否则要重写全部的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值