一、理解
(1)、适配器:说到适配器我们不得不提我们的手机充电器,我们的家用电源为220v,而手机的工作电压假设为5v,这就造成手机无法直接使用220v的家用电,那么充电器除了充电以外还提供将220v电压与手机工作电压之间的适配工作。那么适配器的功能就是将原本某事物与使用者要求不匹配变成匹配。
官方解释:将一个类的接口转化成客户希望的另一接口。
(1)、分类:类适配器、对象适配器器、接口适配器
类适配器:改变某类创建的对象的对外特征,使符合使用者的适配要求,继承源类实现目标接口
对象适配器:对某一对象进行适配,让其改变对外特征。包含源对象引用实现目标接口
接口适配器:改变某一类实现的某一接口让其接口适配客户需求。这里感觉和官方解释的适配器一样,所以官方默认为接口适配器。包含源对象上转型对象引用,实现目标接口
二、代码实现
(1)类适配器
以电源 220v适配到5v为例:
public class dy220v {
int dy=220v;
public int getdy220v() {
return dy;
{
}
public interface dy5v {
public int getdy5v();
}
public class adapter extends dy220v implements dy5v { //继承类源类实现目标接口
public void getdy5v() {
int dy = getdy220v();
dy = dy/44;
return dy;
}
}
public class test {
public static void main(Stying[] args){
dy5v dy =new adapter();
System.out.println(dy.get5vdy());
}
}
(2)对象适配器:
还以电源为例:
public calss adapter implements dy5v {
dy220v dy220; //适配器里面由适配源对象,即对象适配器适配源是一个对象
public void setadapter(dy220v dy) { //设置要适配的对象
this.dy220=dy;
}
public int getdy5v() {
return dy220.getdy220v()/44;
}
}
public calss test {
public static void main(String[] args) {
dy220v dy220 =new dy220v();
adapter dy5v = new adapter();
dy5v.setadapter(dy220);
System.out.println(dy5v.getdy5v());
}
}
(3)接口适配器
public calss dy { //源接口,这里不是真的接口,理解为一组类的特征抽象,客户不适配的一组特征
public int getdy() {
return 220v;
}
}
public interface dy5v { // 目标接口,客户希望的额接口
public int get5v();
}
public calss dy220v extends dy {
public int getdy() {
return 220;
}
}
public class dy110v extends dy {
public int getdy() {
return 110;
}
}
public adapter implements dy5v { //适配器类
dy dy; //里面也有源对象
public void setadapter(dy dy) { //设置源对象
this.dy=dy;
}
public int get5v() { //改造源对象的对外特征,
int x = dy.getdy();
return x/(x/5);
}
}
public class test {
public static void main(String[] args) {
dy220v dy220 = new dy220v();
dy110v dy110 = new dy110v();
adapter dy5v = new adapter();
dy5v.setadapter(dy220);
System.out.println(dy5v.get5v());
dy5v.setadapter(dy110);
System.out.println(dy5v.get5v());
}
}