0
点赞
收藏
分享

微信扫一扫

IO流(缓冲流)

文章目录

1.概念

1.1 什么是适配器模式

1.2 优点与缺点

优点:
1.可以让原本接口不兼容的类可以合作无间。
2.增加了类的透明性和复用性,现有的系统不改变的前提下引进新的接口。
3.灵活性好,可以通过配置文件来更换适配器。
4.系统可以更易于扩展。
缺点:
1.适配器编写过程需要一定的技巧,如果接口差异过大,适配器编写会非常复杂。
2.增加系统的理解与设计难度,由于适配器模式将一些简单的接口转换成复杂的接口,增加阅读难度。

2.实现方式

2.1 类适配器模式

// Lightning接口
public interface Lightning {
    void chargeLightning();
}

// Lightning充电器
public class LightningCharger implements Lightning {
    @Override
    public void chargeLightning() {
        System.out.println("Charging via Lightning connector.");
    }
}

// MicroUSB接口
public interface MicroUSB {
    void chargeMicroUSB();
}

// 类适配器
public class MicroUSBClassAdapter extends LightningCharger implements MicroUSB {
    @Override
    public void chargeMicroUSB() {
        // 直接使用继承自LightningCharger的方法
        System.out.println("Class Adapter converts MicroUSB to Lightning.");
        this.chargeLightning();
    }
}

// 使用类适配器模式
public class AdapterDemo {
    public static void main(String[] args) {
        MicroUSBClassAdapter microUSBClassAdapter = new MicroUSBClassAdapter();
        microUSBClassAdapter.chargeMicroUSB();
    }
}

2.2 对象适配器模式

// Lightning接口
public interface Lightning {
    void chargeLightning();
}

// Lightning充电器
public class LightningCharger implements Lightning {
    @Override
    public void chargeLightning() {
        System.out.println("Charging via Lightning connector.");
    }
}

// MicroUSB接口
public interface MicroUSB {
    void chargeMicroUSB();
}

// 对象适配器
public class MicroUSBObjectAdapter implements MicroUSB {
    private Lightning lightning;

    public MicroUSBObjectAdapter(Lightning lightning) {
        this.lightning = lightning;
    }

    @Override
    public void chargeMicroUSB() {
        // 适配器将MicroUSB充电请求转换为Lightning充电
        System.out.println("Object Adapter converts MicroUSB to Lightning.");
        lightning.chargeLightning();
    }
}

// 使用对象适配器模式
public class AdapterDemo {
    public static void main(String[] args) {
        LightningCharger lightningCharger = new LightningCharger();
        MicroUSBObjectAdapter microUSBObjectAdapter = new MicroUSBObjectAdapter(lightningCharger);
        microUSBObjectAdapter.chargeMicroUSB();
    }
}

3 Java 哪些地方用到了适配器模式

4 Spring 哪些地方用到了适配器模式

举报

相关推荐

0 条评论