适配器模式

  适配器模式:将一个类的接口转换成客户期望的另一个接口。

  客户使用适配器的过程:

  a. 客户通过目标接口(Duck)调用适配器(TurkeyAdapter )的方法,对适配器发出请求。

  b. 适配器(TurkeyAdapter )使用被适配者接口(Turkey)把请求(quack())转换成被支配者的一个或多个方法(gubble())。

  c. 客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。

代码示例:

public interface Duck
{
    public void quack();
    public void fly();
}

public interface Turkey
{
    public void gubble();
    public void fly();
}

  现在,假设你缺鸭子对象,想用火鸡对象来冒充。。。适配器的干活。。。

// 你需要实现想转换成的接口,也就是客户所期望看到的接口
public class TurkeyAdapter implements Duck
{
    // * 冒充鸭子的火鸡
    Turkey turkey;                                      

    public TurkeyAdapter(Turkey turkey)
    {
        this.turkey = turkey;
    }

    public void quack()
    {
        turkey.gubble();
    }

    public void fly()
    {
        turkey.fly();
    }
}

  该模式可以通过创建适配器进行接口转换。让不兼容的接口编程兼容,这可以让用户从实现的接口解耦。

  这个适配器充满着良好的OO设计原则:使用对象组合(上注 *),以修改的接口包装被适配者:这种做法有个额外的优点:被适配者的任何子类(实现接口Turkey的类),都可以搭配着适配器使用。

原文地址:https://www.cnblogs.com/hachun/p/3578143.html