Adaptor适配器模式

271 阅读1分钟

什么时候需要适配器模式?

  现有的程序无法直接使用,且这部分代码不想动或者,,就是不敢动,需要经过适当变换之后才能使用时,可以用适配器来解决
  Adaptor模式,又称Wrapper模式,有以下两种

  • 类适配器模式(使用继承实现)
  • 对象适配器模式(使用委托实现)

1、类适配器模式

如下是一段Banner显示字符串的程序

public class Banner {
    private String text;
    
    public Banner(String text) {
        this.text = text;
    }

    public void showWithParen() {
        System.out.println("(" + text + ")");
    }

    public void showWithAster() {
        System.out.println("*" + text + "*");
    }
}

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

public class PrintBanner extends Banner implements Print {

    public PrintBanner(String text) {
        super(text);
    }

    @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();
    }

}

类图

类适配器

2、委托适配器模式

  委托,将某个方法的实际处理交给其他实例的方法完成。

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

public class PrintBanner extends Print {

    private Banner banner;

    public PrintBanner(String text) {
        this.banner = new Banner(text);
    }

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

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

类扮演的角色

  • Target对象,负责定义所需要的方法,Print接口或抽象类
  • Adaptee被适配,Banner
  • Adaptor适配器