适配器模式有两种:
1.第一种
适配后的程序调用 的接口
package AdapterDesign1;
public interface Target {
void get18V();
void get33V();
void get0V();
}
被适配的对象
package AdapterDesign1;
public class Adaptee {
protected int get220V(){
return 220;
}
}
适配器
package AdapterDesign1;
public class Adapter extends Adaptee implements Target {
@Override
public void get0V() {
//不需要家用点提供可直接返回,即返回0
System.out.println("无电压");
}
@Override
public void get18V() {
System.out.println("通过适配器将"+this.get220V()+"适配为18V");
}
@Override
public void get33V() {
System.out.println("通过适配器将"+this.get220V()+"适配为33V");
}
}
测试方法:
package AdapterDesign1;
public class MyMain {
/**
适配器模式
模拟:
电源适配器
adaptee:家用点220V
Target:获得安全电压,18V
Adapter:电源适配器
*/
public static void main(String[] args) {
Target t=new Adapter();
t.get18V();
t.get33V();
}
}
2.第二种
适配后的程序调用 的接口
package AdapterDesign1;
public interface Target {
void get18V();
void get33V();
void get0V();
}
被适配的两个adaptee对象
package AdapterDesign2;
public class Adaptee1 {
@Override
public String toString() {
return "交流";
}
protected int get220V(){
return 220;
}
}
package AdapterDesign2;
public class Adaptee2 {
@Override
public String toString() {
return "直流";
}
protected int get220V(){
return 220;
}
}
适配器
package AdapterDesign2;
public class Adapter implements Target {
Adaptee1 adaptee1;
Adaptee2 adaptee2;
public Adapter(){
adaptee1=new Adaptee1();
adaptee2=new Adaptee2();
}
@Override
public void get0V() {
//不需要家用点提供可直接返回,即返回0
System.out.println("无电压");
}
@Override
public void get18V() {
System.out.println("通过适配器将"+adaptee1+adaptee1.get220V()+"适配为18V");
}
@Override
public void get33V() {
System.out.println("通过适配器将"+adaptee2+adaptee2.get220V()+"适配为33V");
}
}
测试代码:
package AdapterDesign2;
public class MyMain {
/**
适配器模式
模拟:
电源适配器
adaptee:家用点220V
Target:获得安全电压,18V
Adapter:电源适配器
*/
public static void main(String[] args) {
Target t=new Adapter();
t.get18V();
t.get33V();
}
}