Design Pattern(6)-Adapter Pattern

应用场景

试想,你已经有了一个类A,它具有一些功能。但是现在你需要另一些功能,这些功能可以复用A来实现,那么非常自然地应该想到让新的类来持有A的引用,实现组合结构,转发请求来实现新的功能。

类图

这里写图片描述

实例代码

Target:
你希望有一个完全符合Target接口的类来达到你的功能:

public interface Target {
    void Request();
}

Adapter,适配器,完成一个连接旧有类与目标接口的功能:

public class Adapter implements Target {
    Adaptee adaptee;

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

    @Override
    public void Request() {
        adaptee.specificRequest1();
        adaptee.specificRequest2();
    }
}

旧有类Adaptee:

public class Adaptee {
    void specificRequest1(){
        System.out.println("specificRequest1 called");
    }

    void specificRequest2(){
        System.out.println("specificRequest2 called");
    }
}

Client:

public class Client {
    public static void main(String[] args){
        Target target=new Adapter(new Adaptee());
        target.Request();
    }
}

最终实现,调用Target对象的特定功能,复用了现有类。

扩展

说白了就是一个复用已有类而已,上面是通过组合复用。也可以通过继承复用。即Adapter实现Target接口,又继承自Adaptee类,所以实现复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值