设计模式之适配器模式
1、类图及分析(对象适配器,即使用了组合方式)
可以看到这里有3个类
- Adaptee 英文意思就是被适配者,就是用来适配的类
- Target 需要输出的结果类,这里是一个interface
- Adapter 适配器类,用来进行适配的类,实现了Target接口,使用组合的方式把Adaptee加进来了
2、代码
这里使用适配器模式把220v电压转换成5v电压
public class ObjectAdapter {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.output5v();
}
}
//适配对象
class Adaptee{
public int output220v(){
return 220;
}
}
//目标对象
interface Target{
int output5v();
}
//适配器
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public int output5v() {
int i = adaptee.output220v();
//....
System.out.println(String.format("原始电压%d -> 输出电压 %d",i,5));
return 5;
}
}
3、类图(对象适配器,即使用继承的方式)
4、代码
public class ClassAdapter {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.output5v();
//adapter.output220v(); 坏处:对代码有污染,具有的不该有的方法,不符合单一职责原则
}
}
//适配类 -->用来适配的类
class Adaptee{
int output220v(){
return 220;
}
}
//目标类 -->需要适配成的类
interface Target{
int output5v();
}
//适配器类 -->用来实现适配过程的类
class Adapter extends Adaptee implements Target{
@Override
public int output5v() {
//....
System.out.println(String.format("原始电压 %dv --> 输出电压 %d",this.output220v(),5));
return 5;
}
}