Java设计模式 适配器模式

适配器模式
  • 工作中的场景

    • 经常用来做旧系统改造和升级

    • 如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要

      的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系
      统的数倍。

  • 我们学习中见过的场景

    • java.io.InputStreamReader(InputStream)
    • java.io.OutputStreamWriter(OutputStream)

在这里插入图片描述

适配器模式code

电脑

public class Computer {

	private USB[] usbs = new USB[3];
	private int usbsIndex;

    public void insertUSB(USB usb) {
		if (usbs[usbs.length - 1] == null) {
			usbs[usbsIndex++] = usb;
		} else {
			System.out.println("usb接口已满!");
		}
	}

	public void println(String text) {
		for (USB usb : usbs) {
			if (usb == null) continue;
			System.out.println(usb.out(text));
		}
	}

}

USB 接口类

public interface USB {

	public void in(String text);
	
	public String out(String text);

}

老式键盘 USB 实现类

public class Keyboard {

	public void in(String text) {
		System.out.println("输入: " + text);
	}

	public String out(String text) {
		return text;
	}

}

老式键盘 : 适配器类

public class KeyboardAdapter implements USB {

	private Keyboard keyboard;

	public KeyboardAdapter(Keyboard keyboard) {
		this.keyboard = keyboard;
	}

	@Override
	public void in(String text) {
		keyboard.in(text);
	}

	@Override
	public String out(String text) {
		return keyboard.out(text);
	}

}

Junit 测试

public static void main(String[] args) {

    Computer computer = new Computer();

    Keyboard keyboard = new Keyboard();

    computer.insertUSB(new KeyboardAdapter(keyboard));

    computer.println("Hell World!");

}

适配类也可以基于extends

public class KeyboardAdapter extends Keyboard implements USB {

	@Override
	public void in(String text) {
		super.in(text);
	}

	@Override
	public String out(String text) {
		return super.out(text);
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值