我的设计模式笔记-适配器模式

适配器模式

适配器模式
图片来源:https://refactoringguru.cn/

对于绝大多数的编程语言,适配器一般会作为用户接口(Client Interface)的实现,然后对服务(Service)进行封装,用户还是和以前一样只跟对应接口进行交互,不需要管真正提供服务的是谁。

我的理解

Client调用Client Interface(客户端)进行相关的操作,真正提供服务的实现类Service的接口与Client Interface(用户接口)的接口并不相同,因此无法调用Service中的方法,因为Client只能和Client Interface进行交互(迪米特法则)。因此我们需要引入一个Adapter实现这个Client Interface,Adapter作为一个适配器,使用Service提供的方法来实现Client Interface接口方法的功能。

实现步骤

前提:客户端只能调用Client Interface的接口方法

创建适配器类实现Client Interface中的方法

根据适配器类型(类适配器、对象适配器)调用service提供的方法

代码

//服务接口
public interface Power {
    public void getHightPower();
}
//服务实现类1
public class JapanPower implements Power{
    @Override
    public void getHightPower() {
        System.out.println("提供110V高电压");
    }
}
//服务实现类2
public class ChinaPower implements Power {
    @Override
    public void getHightPower() {
        System.out.println("提供220V高电压");
    }
}
//客户端接口
public interface PhoneCharger {

    /**
     * 手机充电器,低压电
     */
    public void getLowPower();
}
//适配器类(实现客户端接口,使用服务接口的方法进行实现)
public class Adapter implements PhoneCharger{
    private Power power;
    public Adapter(Power power) {
        this.power = power;
    }

    @Override
    public void getLowPower() {
        //插座提供电
        power.getHightPower();
        System.out.println("转为手机能接受的低电压");
    }

}
//客户端调用
public class Client {
    public static void main(String[] args) {
        //用到了桥接模式吧这里
        PhoneCharger charger = new Adapter(new ChinaPower());
        charger.getLowPower();
        PhoneCharger charger2 = new Adapter(new JapanPower());
        charger2.getLowPower();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值