《設計模式之禪》——結構類模式大PK

1.代理模式VS裝飾模式

      裝飾模式就是代理模式的一個特殊應用,兩者的共同點是都具有相同的接口,不同點則是代理模式着重對代理過程的控制,而裝飾模式則是對類的功能進行加強或減弱,它着重類的功能變化。

1.1最佳實踐

      代理模式是把當前的行爲或功能委託給其他對象執行,代理類負責接口限定:是否可以調用真實角色,以及是否對發送到真實角色的消息進行變形處理,它不對被主題角色(也就是被代理類)的功能做任何處理,保證原汁原味的調用。代理模式使用到極致開發就是AOP。
      裝飾模式是在要保證接口不變的情況下加強類的功能,它保證的是被修飾的對象功能比原始對象豐富(當然,也可以減弱),但不做准入條件判斷和准入參數過濾,如是否可以執行類的功能,過濾輸入參數是否合規等,這不是裝飾模式關心的。

2.適配器模式VS裝飾模式

      適配器模式和裝飾模式在通用類圖上沒有太多的相似點,差別比較大,但是它們有相似的地方:都是包裝作用,都是通過委託方式實現其功能。不同點:裝飾模式包裝的是自己的兄弟類,隸屬於同一個家族,適配器則修飾非血緣關係類,把一個非本家族的對象僞裝成本家族的對象,注意是僞裝,因此它的本質還是非相同接口的對象。

2.1最佳實踐

      我們發現這兩個模式有較多的不同點。

  • 意圖不同
          裝飾模式的意圖是加強對象的功能;而適配器模式關注的則是轉化,它的主要意圖是兩個不同對象之間的轉化。
  • 施與對象不同
          裝飾模式裝飾的對象必須是自己的同宗,也就是相同的接口或父類,只要在具有相同的屬性和行爲的情況下,才能比較行爲是增加還是減弱;適配器模式則必須是兩個不同的對象,因爲它着重與轉換,只有兩個不同的對象纔能有轉換的必要。
  • 場景不同
          裝飾模式在任何時候都可以用,只要是想增強類的功能,而適配器模式則是一個補救模式,一般出現在系統成熟或已經構建完畢的項目中,作爲一個緊急處理手段採用。
  • 擴展性不同
          裝飾模式很容易擴展。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章