06.适配器模式

适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。

手机没电了,手机是TypeC接口,但是目前只有USB接口,怎么办呢?需要一个转换头

类的适配器模式

/**
 * USB接口
 */
public interface IUsb {

    void doUsb();
}

/**
 * 需要适配的USB
 */
public class Usb implements IUsb {
    @Override
    public void doUsb() {
        System.out.println("usb");
    }
}

/**
 * TypeC接口(目标接口)
 */
public interface ITypeC {

    void doTypeC();
}

/**
 * 目标(未使用)
 */
public class TypeC implements ITypeC {
    @Override
    public void doTypeC() {
        System.out.println("TypeC");
    }
}

/**
 * 适配器
 */
public class Adapter extends Usb implements ITypeC {
    @Override
    public void doTypeC() {
        System.out.println("我将");
        super.doUsb();
        System.out.println("转换成TypeC了");
    }
}

/**
 * 测试类
 */
public class Test {

    public static void main(String[] args) {
        Adapter adapter = new Adapter();
        adapter.doTypeC();
    }
}

对象的适配器模式

/**
 * 适配器
 */
public class Adapter implements ITypeC {

    private IUsb usb;

    public Adapter(IUsb usb) {
        this.usb = usb;
    }

    @Override
    public void doTypeC() {
        System.out.println("我将");
        this.usb.doUsb();
        System.out.println("转换成TypeC了");
    }
}

/**
 * 测试类
 */
public class Test {

    public static void main(String[] args) {
        Adapter adapter = new Adapter(new Usb());
        adapter.doTypeC();
    }
}

接口适配器模式

public interface A {
     void a();
     void b();
     void c();
     void d();
     void e();
     void f();
}

 public abstract class Adapter implements A {
     public void a(){}
     public void b(){}
     public void c(){}
     public void d(){}
     public void e(){}
     public void f(){}
 }
  public class Ashili extends Adapter {
     public void a(){
         System.out.println("实现A方法被调用");
     }
     public void d(){
         System.out.println("实现d方法被调用");
     }
 }

你可能感兴趣的:(06.适配器模式)