设计模式系列--适配器模式


适配器模式定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法工作的两个类可以一起工作。

所以,适配器模式解决的是类型不匹配的问题。

应用:一般在项目中,一个已经定好的或者已经投产的方法中,方法参数定好了,但是目前的类却无法传入进行,那么可以将这个类适配目标类。

类图:

public interface Target {
	public void sayHello();
}
public static void say(Target t){
	t.sayHello();
}

现在有一个类的方法的传入参数是Target

public class Adaptee {
	public void sayHello2(){
		System.out.println("hello");
	}
}

但是目前提供这样一个类,就要使用它。

在这种情况下,增加适配器:

public class Adapter extends Adaptee implements Target{

	@Override
	public void sayHello() {
		super.sayHello2();
	}
	
}

测试:

public class Client {
	public static void main(String[] args) {
		Target t = new Adapter();
		say(t);
	}
	public static void say(Target t){
		t.sayHello();
	}
}

以上,使用的是类适配器

加入,现在Target是一个类而不是接口了,由于java单继承机制,只能继承一个类,那么可以把Adaptee组合进Adapter中,这种方法是对象适配器

对象适配器解决了java不能多继承而无法适配的问题

public class Adapter2 implements Target{
	private Adaptee adaptee;
	public Adapter2(Adaptee adaptee){
		this.adaptee=adaptee;
	}
	@Override
	public void sayHello() {
		this.adaptee.sayHello2();
	}

}

这个就是对象适配器。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值