适配器模式
定义:
将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容不能一起工作的那些类可以一起工作。
应用场景:
系统需要使用现有类,而这些类不符合系统系统的接口。
使用第三方组件,组件接口定义和自己定义不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。
优点:
符合单一职责原则,符合开闭原则。
代码示例:
适配器模式主要分三类:类的适配器模式、对象的适配器模式、接口的适配器模式。
生活当中,手机的电源适配器就是很好的列子。标准电压是220V,二手机可能只需要5V电压就够了,电源适配器就可用将220V电压转成5V电压。
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
对象的适配器模式:
package com.test;
public class ObjectAdapter {
public static void main(String[] args) {
Target target = new Adapter(new 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;
}
public int output5v() {
int output220v = adaptee.output220v();
System.out.println("原始电压:"+output220v+"---输出电压:"+5);
return 5;
}
}
类的适配器模式:
package com.test.v;
public class ClassAdapter {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.output5v();
}
}
class Adaptee{
public int output220v(){
return 220;
}
}
interface Target{
int output5v();
}
class Adapter extends Adaptee implements Target{
public int output5v() {
int output220v = output220v();
System.out.println("原始电压:"+output220v+"---输出电压:"+5);
return 5;
}
}