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

設計模式之六(裝飾模式)

編輯:C#入門知識

裝飾模式:動態の給一個對象添加有些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。

 

Component是定義一個對象接口,可以給這些對象動態添加職責

ConcreteComponent是定義了一個具體的對象,也可以給這個對象添加一些職責

Decorator裝飾抽象類,繼承了Component,從外類來擴展Componnt類的功能,但對於Component來說,是無需知道Decorator的存在的

Component類

        

ConcreteComponnet類

       

Decorator類

       
         
         
         .component = 
         
           (component != 

ConcreteDecoratorA

      
         
           = 

ConcreteDecoratprB

        
         
         


客戶端調用實例

       Main(= = = 

裝飾的方式是:首先用ConcreteComponent實例化cc,然後用ConcreteComponentA的實例化對象ca來包裝cc,再用ConcreteComponetB的對象cb包裝ca,最終執行cb的Operation()

其實就是利用Setcomponent來對對象進行包裝的。這樣每個裝飾對象的實現就和如何使用這個對象分離開了,每個裝飾對象只關心自己的功能,不需要關心如何被添加到對象鏈當中。

 

不過也有特殊情況:如果只有一個ConcreteComponent類而沒有抽象的Component類,那麼Decorator類可以是ConcreteComponent的一個子類。同樣道理,如果只有一個ConcreteDecorator類,那麼就沒必要建立單獨的Decorator類,而可以把Decorator和ConcreteDecorator的責任合並成一個類。

 裝飾模式就是為已有功能動態添加更多功能的一種方式。

優點可以這樣說:把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類。有效的把類的核心職責和裝飾功能區分開了。

 

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