适配器模式是为了解决对象之间不兼容的问题,有三种实现方式,分别是类适配器、对象适配器、接口适配器。
-
类适配器
package com.depthmind.designpattern.adapter;
public class ClassAdapterPattern {
public static void main(String[] args) {
ClassAdapter adapter = new ClassAdapter();
System.out.println(adapter.output5V());;
}
}
class Output220V {
public int output220V() {
return 220;
}
}
interface Output5V {
int output5V();
}
class ClassAdapter extends Output220V implements Output5V{
@Override
public int output5V() {
int source = output220V();
return source/44;
}
}
-
对象适配器
package com.depthmind.designpattern.adapter;
public class ObjectAdapterPattern {
public static void main(String[] args) {
ObjectAdapter adapter = new ObjectAdapter(new Output220V1());
System.out.println(adapter.output5V());;
}
}
class Output220V1 {
public int output220V() {
return 220;
}
}
interface Output5V1 {
int output5V();
}
class ObjectAdapter implements Output5V1{
private Output220V1 output220V;
public ObjectAdapter(Output220V1 output220V) {
this.output220V = output220V;
}
@Override
public int output5V() {
int source = this.output220V.output220V();
return source/44;
}
}
-
接口适配器
package com.depthmind.designpattern.adapter;
public class InterfaceAdapterPattern {
public static void main(String[] args) {
InterfaceAdapter adapter = new InterfaceAdapter() {
@Override
public int output220V() {
return 5;
}
};
System.out.println(adapter.output220V());;
}
}
interface Output220V2 {
int output220V();
}
abstract class InterfaceAdapter implements Output220V2 {
@Override
public int output220V() {
return 0;
}
}