适配器设计模式
适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口,主要的目的是兼容性,让原本因接口不能匹配一起工作的两个类可以协同工作。
过程:通过适配器将原角色API进行适配为目标角色的API
类适配器模式
通过集成来实现适配功能的。
实现例子:
需求:220v电压通过适配器转换为5v电压
适配器继承于源角色并实现目标角色
通过调用父类中的方法,来实现最终的需求
AdepterTest01 适配器类
public class AdepterTest01 extends AC220V implements DC5V{
@Override
public int dc5V() {
return (super.outPut()/44);
}
public static void main(String[] args) {
AdepterTest01 adepterTest01=new AdepterTest01();
int result=adepterTest01.dc5V();
System.out.println(result);
}
}
AC220V 源角色
public class AC220V {
public int outPut(){
return 220;
}
}
DC5V 目标角色
public interface DC5V {
public int dc5V();
}
对象适配器模式
实现例子:
通过组合来实现适配器功能的(适配器拥有源角色的实例)
public class AdapterTest02 implements DC5V {
private AC220V ac220V;
public AdapterTest02(AC220V ac220V) {
this.ac220V = ac220V;
}
@Override
public int dc5V() {
return (ac220V.outPut())/44;
}
public static void main(String[] args) {
AdapterTest02 adapterTest02=new AdapterTest02(new AC220V());
System.out.println(adapterTest02.dc5V());
}
}
接口适配器模式
需求:不论多少伏电压通过适配器都转换为5v电压
过程:定义一个抽象的电源,并且提供多个适配器角色的有参构造,通过具体源角色的实例使用抽象的电源引用,适配器类实现于目标角色并实现目标角色的方法,在方法体中,我们进行逻辑处理,将输入的电压进行适配器5V电压,从而达到万能适配的效果。
public abstract class ACV {
public int output(){
return 1;
}
}
class AC220V extends ACV{
@Override
public int output() {
return 220;
}
}
class AC110V extends ACV{
@Override
public int output() {
return 110;
}
}
public class AdapterTest03 extends ACV{
private ACV acv;
public AdapterTest03(AC220V ac220V) {
this.acv=ac220V;
}
public AdapterTest03(AC110V ac110V) {
this.acv = ac110V;
}
public int dc5V(){
int ac=0;
if(acv!=null){
ac=acv.output();
}
int sta=ac/5;
return (ac/sta);
}
public static void main(String[] args) {
AdapterTest03 adapter220=new AdapterTest03(new AC220V());
AdapterTest03 adapter110=new AdapterTest03(new AC110V());
System.out.println(adapter220.dc5V());
System.out.println(adapter110.dc5V());
}
}