設計模式從功能上一般分爲創建型、結構型、行爲型 三種類型。
本節要說的就是結構型中的四個模式的區別,先從定義(功能)上進行區別:
定義:
適配器:把一個接口轉換成客戶期望的類型;
代理:爲一個對象提供一個替身或者佔位符,以控制這個對象的訪問;
裝飾:動態的給一個對象附加責任或者行爲
外觀模式:提供一個統一的接口,用來訪問子系統的一羣接口。
功能上:
適配器:讓兩個不同類型的接口合作
代理:控制被代理對象的訪問或延遲創建消耗大的對象的創建時機
裝飾:動態附加責任,通過委託|組合使模式,避免類中出現很多靜態的不需要的代碼功能
外觀:簡化接口,更方便的訪問子系統
實現上:
適配器:創建class A 並實現客戶期望的接口,A中擁有被適配者的接口類型引用(Has-a 關係),把接口功能委託給被適配者;適配者和被適配者屬於不同的類型;
代理:代理類和被代理類實現同一個接口,代理對象是被代理對象的替身,擁有被代理接口的對象引用(Has-a關係);代理者和被代理者屬於同一個類型;
裝飾:裝飾者和被裝飾者繼承同一個子類,被裝飾者也可以裝飾其他裝飾者,所以裝飾者內部擁有一個基類的引用(Has-a);裝飾者和被裝飾者屬於同一個類型;
外觀:外觀類會提供一個統一的接口,同時也會暴露子系統的接口,讓那些需要使用子系統底層功能的客戶端調用
相同點:
1、