设计模式6——适配器模式(结构型模式)

所谓的适配器模式,实现了 “ 目标接口 ” 到 “ 现有接口 ” 的转换,即:将一个现有类的接口转换成客户希望的另一个接口,使得那些原本由于接口不兼容而不能一起工作的类可以一起工作。

当用户所需要的 “目标接口” 和 “现有接口” 出现不一致的情况,在不改变两种接口前提下,需要使用 “适配器模式”,实现对现有接口的充分利用。

一,适配器模式的结构图

适配器模式分为两种类型,分别是 “类适配器模式” 和 “对象适配器模式”。

“类适配器模式” 结构图:

类适配器模式

“对象适配器模式” 结构图:

对象适配器模式

实际使用中较常见的是“对象适配器模式”

以上两图中

Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。

Adapter(适配器类):在内部包装一个Adaptee对象或者实现Target接口,把源接口转换成目标接口。它是适配器模式的核心。

Adaptee(被适配者类):适配者即被适配的角色,它代表一个已经存在的接口,这个接口需要适配成客户所希望的业务接口。

二,适配器模式的代码实现(Java)

1,类适配器

class Adapter extends Adaptee implement Target
{
    public void Request()
    {
        base.SpecificRequest();
    }
}

2, 对象适配器

class Adapter extends Target
{
    private Adaptee adaptee; //维持一个对适配者对象的引用
    
    public Adapter(Adaptee adaptee)
    {
        this.adaptee = adaptee;
    }
    
    public void Request()
    {
        adaptee.SpecificRequest();//转发调用
    }
}

适配器模式的优点:

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

猜你喜欢

转载自blog.csdn.net/ding3106/article/details/82154135