程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#設計模式之裝飾設計模式(Decorator)(4)

C#設計模式之裝飾設計模式(Decorator)(4)

編輯:關於C語言

六、使用裝飾模式的優點和缺點

使用裝飾模式主要有以下的優點:

裝飾模式與繼承關系的目的都是要擴展對象的功能,但是裝飾模式可以提供比繼承更多的靈活性。

通過使用不同的具體裝飾類以及這些裝飾類的排列組合,設計師可以創造出很多不同行為的組合。

這種比繼承更加靈活機動的特性,也同時意味著裝飾模式比繼承更加易於出錯。

使用裝飾模式主要有以下的缺點:

由於使用裝飾模式,可以比使用繼承關系需要較少數目的類。使用較少的類,當然使設計比較易於進行。但是,在另一方面,使用裝飾模式會產生比使用繼承關系更多的對象。更多的對象會使得查錯變得困難,特別是這些對象看上去都很相像。

七、模式實現的討論

大多數情況下,裝飾模式的實現都比上面定義中給出的示意性實現要簡單。對模式進行簡化時需要注意以下的情況:

(1)一個裝飾類的接口必須與被裝飾類的接口相容。

(2)盡量保持Component作為一個"輕"類,不要把太多的邏輯和狀態放在Component類裡。

(3)如果只有一個ConcreteComponent類而沒有抽象的Component類(接口),那麼Decorator類經常可以是ConcreteComponent的一個子類。如下圖所示:

(4)如果只有一個ConcreteDecorator類,那麼就沒有必要建立一個單獨的Decorator類,而可以把Decorator和ConcreteDecorator的責任合並成一個類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved