设计模式:适配器模式

适配器模式在现代流行的框架中经常用到。

当你想用一个已经存在的类,但这个类的接口与你要求的接口不一直;或者你想创建一个与没有兼容的接口或不相关类协作的可复用的类时候,适配器模式就能派上用场。

1、适配器的故事

我们用下面的例子来展示适配器模式,这个例子的目的是将Orange适配成Apple。



 如上图所示,AppleAdapter包含一个Orange的实例,并且继承自Apple。这看起来就像在Orange实例外加了一层AppleAdapter皮肤,Oranger现在就看起来像Apple实例了。

2、类图



 3、实例代码

class Apple {
	public void getAColor(String str) {
		System.out.println("Apple color is: " + str);
	}
}
 
class Orange {
	public void getOColor(String str) {
		System.out.println("Orange color is: " + str);
	}
}
 
class AppleAdapter extends Apple {
	private Orange orange;
 
	public AppleAdapter(Orange orange) {
		this.orange = orange;
	}
 
	public void getAColor(String str) {
		orange.getOColor(str);
	}
}
 
public class TestAdapter {
	public static void main(String[] args) {
		Apple apple1 = new Apple();
		Apple apple2 = new Apple();
		apple1.getAColor("green");
 
		Orange orange = new Orange();
 
		AppleAdapter aa = new AppleAdapter(orange);
		aa.getAColor("red");
	}
 
}

 上面的例子的确是最简单的适配器模式的例子了。双向适配器可能更加比较常用些。实现一个双通道的适配器,需要实现两种接口,包含两种对象实例。不过仍然比较理解。

4、JDK中的应用

java.io.InputStreamReader(InputStream) (returns a Reader)
java.io.OutputStreamWriter(OutputStream) (returns a Writer)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值