Java常用设计模式--适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

组成结构

  1. 客户 (Client):客户类。
  2. 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
  3. 适配者(Adaptee):需要适配的类或适配者类。
  4. 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

举个例子:

电脑的电源是两孔的,现在墙上的插座是三孔,这时就需要一个三控插座转两孔插座的转接器

分析:

三孔插座是目标接口

二孔插座是适配者

三控转两孔转接器是适配器

上代码:

三控插座

package com.example.adapter;

/**
 * 三控插座
 */
public class SocketThree {

    public void insert(ThreeToTwoAdapter threeToTwoAdapter){
        threeToTwoAdapter.handRquest();
    }

}

二孔插座

package com.example.adapter;

/**
 * 二孔插座想插入三控插座但是插入不了
 */
public class SocketTwo {

    public void request(){
        System.out.println("我是二孔插座,我已经通过适配器插入三控插座");
    }

}

适配器接口

package com.example.adapter;

/**
 * 接口三控转两孔转换器抽象
 */
public interface ThreeToTwoAdapter {

    void handRquest();

}

适配器接口实现

 

package com.example.adapter;

/**
 * 需要连接二孔插座和三孔插座的适配器
 */
public class ThreeToTwoAdapterImpl implements ThreeToTwoAdapter {

    private SocketTwo socketTwo;

    public ThreeToTwoAdapterImpl(SocketTwo socketTwo) {
        this.socketTwo = socketTwo;
    }

    @Override
    public void handRquest() {
        socketTwo.request();
    }
}

测试类

package com.example.adapter;

public class Test {

    public static void main(String[] args) {
        //两孔插座
        SocketTwo socketTwo = new SocketTwo();
        //三控插座
        SocketThree socketThree = new SocketThree();
        //两孔插座连接适配器
        ThreeToTwoAdapterImpl threeToTwoAdapterImpl = new ThreeToTwoAdapterImpl(socketTwo);
        //将配器插入三控插座
        socketThree.insert(threeToTwoAdapterImpl);
    }

}

测试结果:

Java常用设计模式--适配器模式(Adapter Pattern)_第1张图片

你可能感兴趣的:(设计模式,java,设计模式)