六、适配器模式Adapter(结构型)

适配器模式将一个类转换成客户希望的另外一个接口,它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在Java中只支持单继承,故Java中实现Adapter模式时常用对象组合来实现,而在C++中可以使用多重继承来实现。


public interface Adaptee {
	public void specificRequest();
}
public class ConcreteAdaptee implements Adaptee{
	@Override
	public void specificRequest() {
		System.out.println("Do sth in Adaptee!");
	}
}

public interface Target {
	public void request();
}
public class Adapter implements Target {
	private Adaptee adaptee = null;

	public Adapter(Adaptee adaptee) {
		this.adaptee = adaptee;
	}
	@Override
	public void request() {
		adaptee.specificRequest();
	}
}
public class Client {
	@Test
	public void test(){
		Adaptee adaptee = new ConcreteAdaptee();
		//使用adaptee创建adapter类型变量
		INeedAAdapter(new Adapter(adaptee));
		
	}
	//测试方法
	public void INeedAAdapter(Target target){
		target.request();
	}
}

这里使用Adapter将Adaptee转化为Target接口类型,并将代理了Adaptee接口的方法。这里的Client的INeedAAdapter需要一个Target接口的变量,但是我们希望调用的却是Adaptee类型的变量的方法,故将Adaptee使用Adapter转化为Target接口类型的变量。

Adapter模式一般常用语多个系统相互结合时,或代码重构时,在多个模块中可能刚开始并没有设计好统一接口,导致接口不兼容现象,使用Adapter模式调整接口定义可以在不改变原有的类的基础上将多个不兼容接口统一为同一个接口,从而方便统一处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值