结构型模式 04 适配器模式

适配器模式 Adapter

只说对象适配器,类适配器需要多重继承
将一个接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
时控制范围之外的一个原油对象与某个接口匹配,来复用一些现存的类,但接口又与复用环境要求不一致的情况
在这里插入图片描述
Target:客户所期望的接口,可以抽象也可以是具体类
Adaper:包装需要适配的对象把原接口转换为目标接口,实现Target,持有Adaptee的引用
Adaptee:需要被适配的类

Target不知道Adaptee这个类,但却能使用它

主要解决两个已有接口之间不匹配的问题,不需要考虑这些接口是怎样实现的,也不考虑它们各自可能会如何演化。我的这种方式不需要对两个独立设计的类中任一个进行重新设计,就能够使它们协同工作。

与代理模式

代理与适配器,其实都是属于一种衔接
代理是一种原来对象的代表,其他需要与这个对象打交道的操作都是和这个代表交涉。
适配器则不需要虚构出一个代表者,只需要为应付特定使用目的,将原来的类进行一些组合。

使用场景

两个类所做的事情相同或相似,系统的数据和行为都正确,但是具有不同的接口时要使用它,使得客户端只需要同一调用同一接口。

实例

Target

public interface Target {
    void request();
}

Adapter

public class Adapter implements Target{
    private Adaptee adaptee = new Adaptee();
    @Override
    public void request() {
        adaptee.specificRequest();
    }
}

Adaptee

public class Adaptee {
    public void specificRequest(){
        System.out.println("特殊请求");
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        Target t = new Adapter();
        t.request();
    }
}

输出:特殊请求,表面没有使用特殊请求方法,但却输出的特殊请求方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值