Design Pattern(6)-Adapter Pattern

来源:互联网 发布:泰格软件使用教程 编辑:程序博客网 时间:2024/06/06 17:33

应用场景

试想,你已经有了一个类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类,所以实现复用。

0 0
原创粉丝点击