设计模式——适配器模式 类适配器 对象适配器

本文通过一个具体示例,深入浅出地介绍了适配器模式的两种实现方式:类适配器和对象适配器。展示了如何在不修改现有代码的基础上,通过适配器将不兼容的接口转换为所需的接口,从而实现新旧代码的无缝对接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个小例子,便于理解,上代码~

//这是我们造的。现在想用这个方法。
public class Adaptee {
    public void specialRequest(){
        System.out.println("called specificrequest()in Adaptee");
    }
}
//类适配器。对我们想要的方法封装一下,Target就能像之前一样,调用request方法即可。
public class Adapter1 extends Adaptee implements Target{
    @Override
    public void request(){
        this.specialRequest();
    }
}
//对象适配器
//这样就达到封装的目的。
public class Adapter2 implements Target{
    Adaptee adaptee = new Adaptee();

    @Override
    public void request(){
        adaptee.specialRequest();
    }
}
public class Client {
    public static void main(String[] args) {
        //元素:1:Target期待调用的接口。2:Adaptee手头上有的被适配类。3:Adapter适配器
        //调用这个接口的方法,实际调用到你想实现的功能。
        //优点:这样就在不改动Adaptee类的情况下,进行封装,用这个适配器来达到调用新方法的目的。
        //缺点:过多的适配器会冗余,因此应该先考虑重构统一的接口。
        //场景:不同的开发人员、不同厂家会导致功能类似,但接口不同。还有使用第三方开发组件时。
        Target t1 = new Adapter1();
        t1.request();

        Target t2 = new Adapter2();
        t2.request();
    }
}
//这里的东西是未知的,不能改的。这是之前客户端调用的东西,是旧的。
//这是原来的接口,原来的request方法。
public interface Target {
    public void request();
}

输出

called specificrequest()in Adaptee
called specificrequest()in Adaptee
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值