簡介
配接器模式(Adapter Pattern)是作為兩個不兼容的介面之間的橋梁,這種型別的設計模式屬于結構型模式,它結合了兩個獨立介面的功能,這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的介面功能,
功能展示
場景模擬
外國出差,給筆記本充電,德國有一套德國標準,中國有一套中國標準(國標),國際有一套國際標準,插排上有不同的孔,二孔、三孔等等(案例不一定真實),,,
功能介紹
- 給筆記本充電
代碼實作
德國標準
德國介面:DBSocket.java
package com.cyb.ssm.design_pattern.adapter; /** * 德國標準的插排 * @author apple * */ public interface DBSocket { void charge(); }
德國介面實作:DBSocketImpl.java
package com.cyb.ssm.design_pattern.adapter; /** * 德國標準的插排 * @author apple * */ public class DBSocketImpl implements DBSocket { @Override public void charge() { System.out.println("使用兩眼插孔充電,,,"); } }
國標標準(中國)
國標介面:GBSocket.java
package com.cyb.ssm.design_pattern.adapter; /** * 中國標準的插排 * * @author apple * */ public interface GBSocket { void charge(); }
國標介面實作:GBSocketImpl.java
package com.cyb.ssm.design_pattern.adapter; /** * 中國標準的插排 * @author apple * */ public class GBSocketImpl implements GBSocket { @Override public void charge() { System.out.println("使用三眼插孔充電,,,,"); } }
國際標準
國際標準介面:GJBZSocket.java
package com.cyb.ssm.design_pattern.adapter; /** * 國際標準插排 * * @author apple * */ public interface GJBZSocket { void charge(); }
國際標準介面實作:GJBZSocketImpl.java
package com.cyb.ssm.design_pattern.adapter; /** * 國際標準插排 * * @author apple * */ public class GJBZSocketImpl implements GJBZSocket { @Override public void charge() { System.out.println("使用四眼插孔充電,,,,"); } }
配接器(重點)
適配類:SocketAdapter.java
package com.cyb.ssm.design_pattern.adapter; /** * 配接器(將不同型別的國標和德標都適配成國際標準) * * @author apple * @param <T> * */ public class SocketAdapter<T> implements GJBZSocket { private T socket; public SocketAdapter(T socket) { super(); this.socket = socket; } @Override public void charge() { if (socket instanceof GBSocket) { // 適配國標 ((GBSocket) socket).charge(); // 強轉資料型別,執行 } else if (socket instanceof DBSocket) { // 適配德標 ((DBSocket) socket).charge(); // 強轉資料型別,執行 } else if (socket instanceof GJBZSocket) { // 適配國際標準 ((GJBZSocket) socket).charge(); // 強轉資料型別,執行 } } }
測驗類:TestAdapter.java
package com.cyb.ssm.design_pattern.adapter; import org.junit.Test; /** * 配接器模式: 將不同型別的物件可以通過適配模式,在一起作業 * * @author apple * */ public class TestAdapter { @Test public void test() { // 德標 SocketAdapter<DBSocketImpl> socketAdapter1 = new SocketAdapter<DBSocketImpl>(new DBSocketImpl()); socketAdapter1.charge(); // 國標 SocketAdapter<GBSocketImpl> socketAdapter2 = new SocketAdapter<GBSocketImpl>(new GBSocketImpl()); socketAdapter2.charge(); // 國際標準 SocketAdapter<GJBZSocketImpl> socketAdapter3 = new SocketAdapter<GJBZSocketImpl>(new GJBZSocketImpl()); socketAdapter3.charge(); } }
實作

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/32478.html
標籤:設計模式
下一篇:AE單詞備忘
