把一個類的接口轉換成客戶端所期待的另外一種接口,從而使原接口不匹配而沒法在一塊兒工做的兩個類能在一塊兒工做this
功能相似可是接口不一樣這時就能夠使用適配器,通常狀況下在前期第一時間考慮經過重構統一接口。好比在使用第三方開發組件的時候,本身的系統接口與組件接口不一樣,不用爲了迎合去改本身的接口能夠使用適配器模式。code
Target類目標接口客戶端可識別,Adaptee須要適配的類,Adapter適配器類orm
//類適配器 class Adaptee{ public void sepcialMethod(){ System.out.println("yyx!"); } } interface Target(){ public void normalMethod(); } class actualTarget implements Target(){ public void normalMethod(){ System.out.println("yyx"); } } class Adapter extends Adaptee implements Target(){ public void normalMethod(){ super.sepcialMethod(); } } //對象適配器 class Adapter implements Target(){ private Adaptee adaptee; public Adapter(Adaptee adaptee){ this.adaptee = adaptee; } poublic void normalMethod(){ this.adaptee.sepecialMethod(); } }
JAVAIO中有許多用到了對象適配器對象
InputSreamReader是適配器類 StreamDecoder(傳入InputStream,這個類將InputStream從字節流變成了字符流)是適配者 Reader是目標類 將InputStream和Reader適配。接口
StringReader是適配器類 String是適配者 Reader是目標類 將String和Reader適配。ci