适配器模式

适配器模式

适配器模式介绍

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。举个简单的例子,现如今许多智能手机为了减小空间的浪费,逐渐取消了3.5mm圆孔的耳机孔,只保留了一个充电和插耳机通用的type-c孔,那么为了能让我们圆形耳机孔能适配type-c口,我们只需要买一个转接头就能将圆孔转换成type-c口就能正常使用圆孔耳机了。适配器适用于以下几种业务场景:

1、已经存在的类,它的方法和需求不匹配的情况。

2、适配器模式不是软件设计阶段考虑的设计模式,而是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。

适配器模式案例一

下面通过代码展示一下3.5mm圆形耳机插口通过适配器转成type-c的耳机插口,首先编写圆形插口耳机类CircleEarphone

/**
 * @author: Winston
 * @createTime: 2021/6/28
 *
 * 圆形耳机,表示只能插圆形的手机
 */
public class CircleEarphone {
   

    public void insertCircle(){
   
        System.out.println("圆形耳机插头,能插入圆形耳机孔");
    }

}

目标接口TypeC,也就是客户想要的功能

public interface TypeC {
   

    /**
     * 能插入type-c耳机孔的头
     */
    public void insertTypeC();
}

圆形插头的适配器Adapter,也就是把圆形插头转成type-c插头的适配器,这里有两种形式实现,第一种是类适配器,第二种是方法适配器。

/**
 * @author: Winston
 * @createTime: 2021/6/28
 *
 * 圆形耳机的适配器实现1,类适配器,通过集成和实现接口的方式,将圆形插头->type-c插头
 */
public class CircleAdapter1 extends CircleEarphone implements TypeC {
   

    @Override
    public void insertTypeC() {
   
        // 调用父类方法
        insertCircle();
        System.out.println("使用圆口适配器,将圆形耳机插口转成type-c耳机插口");
    }
}
/**
 * @author: Winston
 * @createTime: 2021/6/28
 *
 * 圆形耳机的适配器实现二,方法适配器,通过构造方法的形式,将圆形插头->type-c插头
 */
public class CircleAdapter2 implements TypeC {
   
    // 直接关联被适配类
    private CircleEarphone circleEarphone;

    // 通过构造函数传入具体需要适配的被适配类对象
    public CircleAdapter2(CircleEarphone circleEarphone) {
   
        this.circleEarphone = circleEarphone;
    }

    @Override
    public void insertTypeC() {
   
        // 这里是使用委托的方式完成特殊功能
        circleEarphone.insertCircle();
        System.out.println("使用圆口适配器,将圆形耳机插口转成type-c耳机插口");
    }
}

编写测试类typc-c耳机插口的手机:

/**
 * @author: Winston
 * @createTime: 2021/6/28
 *
 * 测试类,type-c耳机口的手机
 */
public class TypeCMobile {
   
    public static void main(String[] args) {
   
        System.out.println("==================第一种适配器:类适配器=====================");
        CircleAdapter1 adapter1 = new CircleAdapter1();
        adapter1.insertTypeC();
        System.out.println("我是type-c耳机孔的智能手机,插入成功");

        System.out.println("==============
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值