Java设计模式-适配器模式

1、简介

适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。

2、适配器模式分类

  • 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

  • 需要适配的类(Adaptee):需要适配的类或适配者类。

  • 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

3、代码展现-类适配器(通过继承方式实现)

场景:我电脑需要上网,但是只有网线不行得,但是需要usb插口才可以上网

网线类,能够实现上网,但是没有接口适配器

/**
 * @Author charles.yao
 * @Description 网线(能够上网-需要转化成usb)
 * @Date 2023/3/7 19:36
 */
public class NetWorkLine {
    /**
     * 能够上网
     */
    public void requestNet() {
        System.out.println("我是网线能够上网");
    }
}

转换接口&&适配器

/**
 * 网线转换成usb
 */
public interface INetWorkToUsb {
    /**
     * 将网线转换成usb
     */
    void convertToRequestNet();
}


/**
 * @Author charles.yao
 * @Description 网络适配器()
 * @Date 2023/3/7 19:40
 */
public class NetAdapter extends NetWorkLine implements INetWorkToUsb{
    @Override
    public void convertToRequestNet() {
        //TODO 业务处理在进行转化
        super.requestNet();
    }
}

电脑通过适配器才能上网

/**
 * @Author charles.yao
 * @Description 电脑上网
 * @Date 2023/3/7 19:44
 */
public class ComputerOnLine {
    /**
     * 电脑上网-插入适配器进行转换才能上网
     * @param adapter
     */
    public void online(INetWorkToUsb adapter){
        adapter.convertToRequestNet();
    }
}

测试类


/**
 * @Author charles.yao
 * @Description 适配器测试类
 * @Date 2023/3/7 19:45
 */
public class AdapterTest {
    public static void main(String[] args) {
        ComputerOnLine computerOnLine = new ComputerOnLine();
        INetWorkToUsb netAdapter = new NetAdapter();
        computerOnLine.online(netAdapter);
    }
}

4、通过类适配器方式实现

/**
 * @Author charles.yao
 * @Description 对象适配器-取消继承方式,使用构造方式一样可以
 * @Date 2023/3/7 19:52
 */

public class NetAdapter1 implements INetWorkToUsb{
    private NetWorkLine netWorkLine;

    public NetAdapter1(NetWorkLine netWorkLine) {
        this.netWorkLine = netWorkLine;
    }

    @Override
    public void convertToRequestNet() {
        netWorkLine.requestNet();
    }

}

测试类

/**
 * @Author charles.yao
 * @Description 适配器测试类
 * @Date 2023/3/7 19:45
 */
public class AdapterTest2 {
    public static void main(String[] args) {
        ComputerOnLine computerOnLine = new ComputerOnLine();
        INetWorkToUsb netAdapter = new NetAdapter1(new NetWorkLine());
        computerOnLine.online(netAdapter);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值