大话设计模式之适配器模式

适配器模式


适配器模式将两个无法一起工作的类或者接口可以一起工作。

适用场景:
当我们新增一个功能,需要引入第三方接口又不能改变原有功能时,这时可以采用适配器模式。

下图形象生动描述了适配器作用:
请添加图片描述

图片上的转接头,将原本不适配的耳机、手机适配在一起,尚可认为转接头==适配器。

适配器三要素:
1、目标(Target):我们原有的类、接口
2、被适配类(Adaptee):第三方提供的类、接口
3、适配器(Adapter):适配逻辑类

代码举例:

目标接口:

/**
 * Target目标接口
 */
public interface Target {

    /**原有的接口方法*/
    public void target();
}

目标接口原有实现类:

/**
 * 原有的Target业务方法
 */
public class TargetService implements Target {

    @Override
    public void target() {
        System.out.println("已经被使用的TargetService");
    }
}

第三方提供的类:

/**
 * 第三方提供、被适配类
 */
public class Adaptee {

    public String service(){
        System.out.println("2021-10-29");
        return "第三方提供的方法";
    }
}

适配类(方式一):

/**
 * 通过继承方式进行适配操作
 */
public class Adapter extends Adaptee implements Target  {


    @Override
    public void target() {
        String service = super.service();
        System.out.println(service+" ----> 适配完成");
    }
}

适配类(方式二):

/**
 * 通过对象形式进行适配操作
 *
 */
public class Adapter2  implements Target {

    private Adaptee adaptee;

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

    @Override
    public void target() {

        String service = adaptee.service();
        System.out.println(service+" ----> 适配完成2");
    }
}

注入SpirngIOC容器:

/**
 * 加载到SpringIOC容器中去
 */
@Configuration
public class AdapterConfigure {

    @Bean
    public Adaptee adaptee(){
        return new Adaptee();
    }

    @Bean(name = "adapter")
    public Adapter adapter(){
        return new Adapter();
    }


    @Bean(name = "adapter2")
    public Adapter2 adapter2(@Qualifier("adaptee") Adaptee adaptee){
        return new Adapter2(adaptee);
    }
}

单元测试:

@SpringBootTest(classes = DesignerModeApplication.class)
@RunWith(SpringRunner.class)
public class AdapterTest {

    @Resource
    private Target adapter2;

    @Resource
    private Target adapter;

    @Test
    public void test(){
        adapter.target();
    }

    @Test
    public void test2(){
        adapter2.target();
    }
}

测试结果:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值