概述:
把一個類接口轉換成另一個用戶需要的接口,使原本接口不兼容的類可以一起工作
適用場景:
已經存在的類,它的方法和需求不匹配時(方法結果相同或相似)
不是軟件設計階段考慮的設計模式,是隨着軟件維護,由於 不同產品、不同廠家造成功能類似而接口不相同情況下的解決方案
優點:
能提高類的透明性和複用,現有的類複用但不需要改變
目標類和適配器類解耦,提高程序擴展性
符合開閉原則
缺點:
適配器編寫過程需要全面考慮,可能會增加系統的複雜性
增加系統代碼可讀的難度
一般分爲類適配器和對象適配器,一個通過繼承,一個通過組合
類適配模式
對象適配模式
源代碼:https://github.com/NoSuchClass/design_pattern/tree/master/src/structural/adapter
JDK中使用
* java.util.Arrays#asList()
* java.util.Collections#list()
* java.util.Collections#enumeration()
* javax.xml.bind.annotation.adapters.XMLAdapter