Java设计模式笔记(1)-适配器模式

适配器的定义

适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。

两种模式:

  • 类适配器模式:使用继承的适配器 接口
  • 对象适配器模式:使用委托的适配器 抽象类

涉及角色:

  • 源角色(Adaptee):需要适配的类
  • 目标角色(Target):想要得到的接口
  • 适配器(Adapter):转换装置

类适配器模式例子

源角色

public class Banner {
    private String string;
    
    public Banner(String string) {
        this.string = string;
    }
    
    public void showWithParen() {
        System.out.println("(" + string + ")");
    }
    
    public void showWithAster() {
        System.out.println("*" + string + "*");
    }
}

目标角色

public interface Print {
    void printWeak();
    
    void printStrong();
}

适配器

public class PrintBanner extends Banner implements Print{
    public PrintBanner(String string) {
        super(string);
    }
    
    @Override
    public void printWeak() {
        showWithParen();
    }

    @Override
    public void printStrong() {
        showWithAster();
    }
}

测试类

public class Main {
    public static void main(String[] args) {
        Print p = new PrintBanner("Hello");
        p.printWeak();
        p.printStrong();
    }
}

打印输出

(Hello)
*Hello*

对象适配器模式

目标角色

public abstract class Print {
    public abstract void printWeak();
    public abstract void printStrong();
}

适配器

public class PrintBanner extends Print{
    private Banner banner;
    
    public PrintBanner(String string) {
        banner = new Banner(string);
    }
    
    
    @Override
    public void printWeak() {
        banner.showWithAster();
    }

    @Override
    public void printStrong() {
        banner.showWithParen();
    }
}

适配器的优点

系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

适配器的缺点

过多的使用适配器,会让系统非常零乱,不易整体进行把握。

使用场景

  • 旧版本适配新版本,旧版本经过测试已经稳定运行很久。在更新版本时,想要抛弃旧版本,又要兼容旧版本,就可以使用适配器模式来适配旧版本对象
  • 功能不同的类使用适配器进行转换,使得类可以使用。
  • 让现有的类适配新的接口

你可能感兴趣的:(Java设计模式笔记(1)-适配器模式)