###適配器模式 ####適配器模式定義框架
適配器模式將一個類的接口,轉換成客戶指望的另外一個接口。使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠在一塊兒工做。this
**好比:**一個電腦須要兩項插座,220V的電源,如今有三項插座和110V電源,如何讓其工做呢,如今就須要插座適配器和電源適配器設計
####適配器模式代碼實現日誌
package com.immoc.pattern.adapter; public class GBTwoPlug { public void powerWithTwo(){ System.out.println("使用二相電源"); } } package com.immoc.pattern.adapter; /** * 三項插座接口 */ public interface ThreePlugIf { //使用三項電流供電 public void powerWithThree(); } package com.immoc.pattern.adapter; /** * 二相轉三相的插座適配器(採用組合方式) */ public class TwoPlugAdapter implements ThreePlugIf { private GBTwoPlug plug; public TwoPlugAdapter(GBTwoPlug plug) { this.plug = plug; } public void powerWithThree() { System.out.println("經過轉換"); //對適配器原有接口方法的調用被委託給新接口的實例的特定方法 plug.powerWithTwo(); } } package com.immoc.pattern.adapter; /** * 採用繼承的方式 */ public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf { public void powerWithThree() { System.out.println("藉助繼承適配器"); this.powerWithTwo(); } } package com.immoc.pattern.adapter; public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug) { this.plug = plug; } //使用插座充電 public void charge(){ plug.powerWithThree(); } public static void main(String[] args) { GBTwoPlug two = new GBTwoPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); three = new TwoPlugAdapterExtends(); nb = new NoteBook(three); nb.charge(); } }
####適配器模式優勢code
透明 經過適配器,客戶端能夠調用同一接口,於是對客戶端來講是透明的,這樣坐更簡單,更直接,更緊湊(日誌框架設計)。對象
重用 複用了現存的類,解決了現存類和複用環境要求不一致的問題(代碼重構)。繼承
低耦合 將目標類和適配者類解耦,經過引入一個適配其類重用現有的適配類,而無需修改原有的代碼(遵照開閉原則(對修改關閉,對擴展開放))接口