适配器模式

适配器模式(Adapter pattern)
概念

网线转换头用过没!插usb上滴!!就是它!

术语:将一个类的接口转换成客户希望的另外一个接口

作用

使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

工作中的场景(用来做旧系统改造和升级)
如果我们的系统开发之后再也不需要维护,那么很多模式都是没有必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍

Java中场景

字节流到字符流的转换

InputStreamReader(InputStream)

OutputStreamWriter(OutputStream)

案例(电脑键盘)

创建被适配的类(键盘)---提供一个完成功能需求方法(如打字)

/*
 * 被适配的类-----键盘(提供了一个需求)
 */
public class Adaptee {
	public void request(){
		System.out.println("可以完成客户端需要的功能!");
	}
}

创建客户端类(电脑)---只有一个USB接口

/*
 * 客户端类-------电脑(只有USB接口)
 */
public class Client {
	public void test(Target t){
		t.handle();
	}
}

USB接口

/*
 * usb接口
 */
public interface Target {
	public abstract void handle();
}

很显然,想要在客户端Client(电脑)中调用被适配类Adaptee(键盘)中的request方法是完成不了的

加入适配器类

/*
 * 适配器
 * 实现了USB接口,重写了接口中的方法,并在方法中调用了被适配器类Adaptee(键盘)
 */

public class Adapter implements Target{
	private Adaptee adaptee;

	public Adapter() {
	}

	public Adapter(Adaptee adaptee) {
		super();
		this.adaptee = adaptee;
	}

	@Override
	public void handle() {
		adaptee.request();
	}
	
}

这个时候电脑就可以通过适配器调用键盘了

/*
 * 客户端类-------电脑(只有USB接口)
 */
public class Client {
	public void test(Target t){
		t.handle();
	}
	
	public static void main(String[] args) {
		//电脑
		Client c = new Client();
		//键盘
		Adaptee adaptee = new Adaptee();
		//适配器
		Target  t = new Adapter(adaptee);
		
		c.test(t);
	}
}

console:
可以完成客户端需要的功能!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值