设计模式-2、适配器模式

什么是适配器模式?

生活中常见的适配器是电源适配器,比如手机的充电器,就是个电源适配器,把220V的电压转为5V的电压,提供给手机充电。
所谓适配器,就是连接在两个不匹配的东西之间,使之匹配的一个中间件。
因此适配器模式就是这样一个模式,可以将不匹配的接口转化为可以匹配的接口,使原本因不兼容而无法一起工作的接口与类可以一起工作。

类适配器

类适配器的适用场景:
客户端要使用的接口没有对应的方法,但是这个方法能在其他接口或者类中找到,但是又不想修改原来的接口,也不希望或者不能直接使用另一个类,这种场景就需要用到适配器,通常的做法是 定义一个适配器,实现客户端要用的接口,继承有目标功能的类,在对应的接口的实现中调用目标功能达到功能的适配。

220V接口

public interface _220V{
	void out220V();
}

5V接口

public interface _5V{
 void out5V();
}

5V实现类

public class _5V_  implements _5V{
	 void out5V(){
 	System.out.print("输出5V电源");
}
}

适配器

public class Adapter extends _5V_ implements _220V{
	void out220V(){
	out5V();
	}
}

如此一来,220V的电源通过适配器可以输出5V的电源,起到了适配的作用。

对象适配器

而对象适配器的使用场景同类适配器是一样的,无非是把继承改为了委托,即在适配器中持有目标方法所在的对象,在适配器的接口方法内调用目标对象的方法,实现适配。

public class Adapter implements _220V{
	_5V _5v = new _5V_();
	void out220V(){
	_5v.out5V();
	}
}

接口适配器

接口适配器适用的场景如下:
在一个接口内,定义了很多很多方法,但是如果我需要某一些功能,而不是全部,如果直接实现,那么就意味着需要实现这个接口内所有的方法,即使不使用也必须有置空的方法,显得非常臃肿。
而接口适配器就是 定义一个类(抽象不抽象皆可,一般为抽象),去实现这个接口,并实现接口内所有的方法【可以置空】,然后在通过继承这个类,然后重写需要的方法,这样就不会显得臃肿。

目标接口:

public interface TargetInteferce{
void a();
void b();
void c();
void d();
void e();
void f();
}

适配器:

public abstract class  Adapter implements TargetInteferce{
public void a(){}
public void b(){}
public void c(){}
public void d(){}
public void e(){}
public void f(){}
}

目标类:

public class Target extends Adapter{
public void a(){
System.out.println("a");
}
public void b(){
System.out.println("b");
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值