适配器模式的作用是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。下面举一个实例,家电的插头转换,从两个口转换成三个口。先给出原有系统和客户系统的两种接口:
原有系统接口(电器自带的三口插头)
public interface IWithEarthWirePlug{ /* liveWire 火线 nullWire 零线 earthWire 地线 */ public void plug(String liveWire,String nullWire,String earthWire); }
新系统接口(壁挂插座要求的两口插头)
public interface INoEarthWirePlug{ /* liveWire 火线 nullWire 零线 */ public void plug(String liveWire,String nullWire); }
源类(实现了源接口)
public class TVPlug implements IWithEarthWirePlug{ public void plug(String liveWire,String nullWire,String earthWire){ play(); } private void play(){ System.out.println("播放电视节目"); } }
适配器类(对象适配器)
public class Plug3to2Adapter implements INoEarthWirePlug{ private IWithEarthWirePlug adaptee; public void plug(String liveWire,String nullWire){ adaptee.plug(liveWire,nullWire,null); } public Plug3to2Adapter(IWithEarthWirePlug adaptee){ this.adaptee=adaptee; } }
这样就完成了转换。下面是适配器客户端代码
public class Client{ public static void main(String[] args){ INoEarthWirePlug plug=new Plug3to2Adapter(new TVPlug()); plug.plug("火线","零线"); } }
客户端运行结果:
播放电视节目