適配器模式的作用是將一個類的接口轉換成客戶希望的另外一個接口。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("火線","零線"); } }
客戶端運行結果:
播放電視節目