赞
踩
能够使类和对象结合到一起形成更大的结构。
能够使原来不兼容的事物可以一起工作,这个新的设备称为适配器。
就像我们买的有些平板没有耳机插孔,就需要一个充电器插口转接耳机插口的一个适配器。以前的sd卡无法直接插到电脑上实现直接的文件转储功能,这时候如果有一个读卡器,就能实现sd卡与电脑的连接,让这两个设备能够一起工作,这个读卡器就是一个适配器。
适配器模式(Adapter Patter)定义:将一个接口转换成用户希望的另一个接口,适配器模式使接口不兼容的那些类一起工作,其别名为包装器(Wrapper)。
1.Target(目标抽象类)
目标抽象类定义客户要用的特定领域的接口,可以是个抽象类接口,也可以是个具体类。
2.Adapter(适配器类)
适配器类可以调用另一个接口,作为一个转换器,对也Adaptee和Target进行适配。适配器Adapter是适配器模式的核心。
在类适配器中,它通过实现Target接口并继承Adapter类来使两者产生联系;
在对象适配器中,它通过继承Target并关联一个Adapter对象使两者产生联系。
3.Adaptee(适配者类)
适配者即被适配的角色,它定义一个已经存在的接口,这个接口需要适配。适配者类一般是一个具体类,它包含客户希望使用的业务方法。
4.Client(客户类)
在客户类中针对目标抽象类进行编程,调用在目标抽象类中定义的业务方法。
我们想构建一个适配器,让耳机与只有充电器插孔的平板一起工作,也就是说,构建一个充电孔转耳机孔的适配器。
AirPlus 类 (Adaptee(适配者类)):
耳机类只有听的方法
public class AirPlus {
public void listen() {
System.out.print("听.....");
}
}
Ipad类(Target(目标抽象类)):
ipad只有充电的方法
public interface Ipad {
public void chongdian();//平板只有充电器接口
}
IpadAdapter类(Adapter(适配器类)):
当用户使用充电器接口的时候,适配器调用的是调用耳机的方法,实现平板与耳机能够一起工作
public class IpadAdapter extends AirPlus implements Ipad{
public void chongdian() {
System.out.print("使用平板");
super.listen();//调用耳机的听的方法,相当于不同插头的转接
}
}
Client类:
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
AirPlus airplus=new AirPlus();
Ipad i=new IpadAdapter();
i.chongdian();
}
}
AirPlus 类(Adaptee(适配者类)):
耳机类只有听的方法
public class AirPlus {
public void listen() {
System.out.print("听.....");
}
}
Ipad类(Target(目标抽象类)):
ipad只有充电的方法
public abstract class Ipad {
public abstract void chongdian();//平板只有充电器接口
}
IpadAdapter类(Adapter(适配器类)):
当用户使用充电器接口的时候,适配器调用的是调用耳机的方法,实现平板与耳机能够一起工作
public class IpadAdapter extends Ipad{
private AirPlus airplus;
public IpadAdapter() {
airplus=new AirPlus();
}
public void chongdian() {
System.out.print("使用平板");
airplus.listen();//调用耳机的听的方法,相当于不同插头的转接
}
}
Client类:
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ipad i=new IpadAdapter();
i.chongdian();
}
}
缺省适配器模式是适配器模式的一种变形,但其使用也非常广泛。
缺省适配器模式(Default Adapter Pattern)定义:当不需要全部实现接口提供的方法时,可先设计一个抽象类实现该接口,并为接口中每个方法提供一个默认实现(空方法),n那么该抽象类的子类可以有选择的覆盖父类的某些方法来实现需求。
适用于一个接口不想使用其所有方法的情况,因此也称为单接口适配器模式。
在对象适配器的使用中,如果在适配器中同时包含目标类和适配器的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配器者类中的方法,那么适配器是一个双向适配器。
适配器模式优点:将目标类和适配器类解耦,增加了类的复用性和透明性,同时系统的灵活性和扩展性都非常好,更换适配器或者增加新的适配器都非常方便,符合“开闭原则”。
适配器模式缺点:
类适配器模式的缺点是适配器类在很多编程语言中不能同时适配多个适配者类;
对象适配器模式的缺点是很难置换适配者类的方法。
原创不易,如果对您有帮助,点个赞再走吧✧*。٩(ˊᗜˋ*)و✧*。谢谢~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。