下载网站软件免费安装,凡科快图可以商用吗,郑州网站外包公司简介,广东省公路建设公司网站概览
适配器模式是一种结构型设计模式#xff0c;用于将一个类的接口转换为客户端所期望的另一种接口。通常情况下#xff0c;这种转换是由一个适配器类完成的#xff0c;适配器类包装了原始类#xff0c;并实现了客户端所期望的接口。这种模式非常适用于在不修改现有代码…概览
适配器模式是一种结构型设计模式用于将一个类的接口转换为客户端所期望的另一种接口。通常情况下这种转换是由一个适配器类完成的适配器类包装了原始类并实现了客户端所期望的接口。这种模式非常适用于在不修改现有代码的情况下为已有的类添加新的功能或者将现有的类与其他类进行协同工作。
在Java中适配器模式通常包括三个角色
目标接口Target客户端所期望的接口适配器类会实现这个接口以便让客户端可以使用它。
原始类Adaptee需要被适配的类即客户端不能直接使用的类。
适配器类Adapter包装了原始类实现了目标接口并将客户端的请求转换成对原始类的调用。
例子
下面是一个使用适配器模式将三插转换为二插的例子
// 定义电器接口
public interface ElectricAppliance {public void powerOn();
}// 定义原始类支持两个针脚的二插电源接口
public class TwoPinPlug implements ElectricAppliance {Overridepublic void powerOn() {System.out.println(Using two-pin plug to power on the appliance.);}
}// 定义适配器类支持三个针脚的三插电源接口
public class ThreePinAdapter implements ElectricAppliance {private ThreePinPlug threePinPlug;public ThreePinAdapter(ThreePinPlug threePinPlug) {this.threePinPlug threePinPlug;}Overridepublic void powerOn() {System.out.println(Using three-pin plug adapter to power on the appliance.);threePinPlug.powerOn();}
}// 定义原始类支持三个针脚的三插电源接口
public class ThreePinPlug {public void powerOn() {System.out.println(Using three-pin plug to power on the appliance.);}
}// 客户端程序使用电器接口来操作电器设备
public class Main {public static void main(String[] args) {ElectricAppliance appliance;// 使用两个针脚的二插电源接口直接操作电器appliance new TwoPinPlug();appliance.powerOn();// 使用三个针脚的三插电源接口时需要使用适配器将其转换成二插电源接口appliance new ThreePinAdapter(new ThreePinPlug());appliance.powerOn();}
}
在上面的例子中我们定义了一个电器接口ElectricAppliance其中有一个powerOn()方法用于打开电器设备。我们还定义了一个支持两个针脚的二插电源接口TwoPinPlug以及一个支持三个针脚的三插电源接口ThreePinPlug。由于两种电源接口不兼容我们需要使用适配器模式将三插电源接口转换成二插电源接口。适配器类ThreePinAdapter实现了ElectricAppliance接口其中持有一个ThreePinPlug对象并将其转换成ElectricAppliance接口可以使用的形式。在客户端程序中我们可以直接使用TwoPinPlug对象来操作电器设备也可以使用适配器将ThreePinPlug对象转换成ElectricAppliance接口可以使用的形式。
类图 适配器模式类图
适配器模式涉及三个角色
Target目标抽象类或接口定义客户端需要的特定接口或抽象类即客户端希望调用的方法集合。 Adapter适配器类将原始接口转换成目标接口它实现了目标接口并持有原始接口的引用负责将客户端的请求转换成对原始接口的调用。 Adaptee原始类定义了一个已经存在的接口但这个接口并不符合客户端需要的接口需要进行适配。Adaptee类是被Adapter适配的类它是已经存在的、运行良好的类或对象通过适配器模式可以使它与新系统环境协同工作。 在适配器模式中客户端通过调用Target接口中的方法来访问适配器适配器再调用Adaptee中的方法来完成客户端的请求从而实现了客户端与Adaptee之间的适配。
需要注意的是在适配器模式中Target接口可以是一个抽象类或一个接口Adapter类是一个具体类而Adaptee类既可以是具体类也可以是抽象类。