适配器模式
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
class Target{
public void Request() {
System.out.println("普通请求!");
}
}
class Adaptee{
public void SpecificRequest() {
System.out.println("特殊请求!");
}
}
class Adapter extends Target{
private Adaptee adaptee=new Adaptee();
public void Request() {
adaptee.SpecificRequest();
}
}
public class Main {
public static void main(String[] args) {
Target target=new Adapter();
target.Request();
}
}
为了使客户能够使用Adaptee类,提供一个中间环节,即类Adapter类,Adapter类实现了Target接口,并继承自Adaptee,Adapter类的Request方法重新封装了Adaptee的SpecificRequest方法,实现了适配的目的。
interface ITarget{
default void Request() {
}
}
//Adaptee(需要适配的类)
class Adaptee{
public void SpecificRequest() {
System.out.println("特殊请求!");
}
}
class Adapter extends Adaptee implements ITarget{
public void Request() {
this.SpecificRequest();
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ITarget target=new Adapter();
target.Request();
}
}
二、何时使用适配器模式
两个类所做的事情相同或相似,但是具有不同的接口时要使用它,客户代码可以统一调用同一接口就行了。这样可以更简单更直接更紧凑。就是在双方都不太容易修改的时候在使用适配器模式适配。