看完適配器模式,我想起一個成語“亡羊補牢”
爲什麼呢?我們通常設計一個類,入參和返回值都是爲了符合當前的需要,比如某個請求相冊數據的接口我們直接返回了List<ImgVO>,但是有一天前端也想用這個接口,但是和他們定義的通用返回結構是Result這樣子的結構
Result.class |
---|
Integer code; |
String msg; |
Object data; |
而我們又不想去更改現有的代碼去兼容他們,那麼我們可以給他們用適配器模式再去設計一個符合他們要求的一個類(適配器),通過繼承當前類(被適配類)並重寫這個方法更改返回值,或者將當前類傳入適配器類中作爲成員變量,實際的運算邏輯仍然調用(被適配類),而只用重新封裝返回參數的代碼。
適配器模式分爲兩種:類適配器模式、對象適配器模式
類適配器模式通過繼承的方式,而對象適配器模式則通過委託的方式實現(委託給原對象,即將原對象作爲一個成員變量在適配器類中使用)
下面是適類配器模式的類圖:
對象適配器的類圖:
適配器模式中的角色:
1. 對象(Target):對調用者提供調用的方法
2. 被適配者(Adaptee):實際邏輯的執行者,但是輸入或者返回的格式不能滿足調用者的需要
2. 適配器類(Adapter):按照調用者要求的輸入或者返回的格式來適配,實際的邏輯仍是被適配者執行。
適配器模式,屬於結構型的設計模式