小A:“裝飾器模式與適配器模式有什麼區別?”
大B:“裝飾器模式與適配器模式都叫做包裝模式(Warpper),但裝飾器與被裝飾具有相同的接口(具體表現爲都實現想同的JavaInterface或裝飾器是被裝飾類的子類等)。但適配器與被適配的類具有不同的接口(雖然可能用部分重合的API)如BufferedReader是一個Decorator因爲它接受一個Reader對象,但是InputStreamReader它接受一個InputStream對象,把InputStream的API轉換成Reader的API。半裝飾器(退化了的裝飾器)如果一個Decorator除了提供被裝飾類的接口外還提供了另外的方法,就變成了一個半透明的裝飾器,客戶如果要使用這個特殊的方法說要使用具體的裝飾器類,這樣就違背了裝飾器模式的使用初衷,但實際應用往往無法避免。”