今天俺要說一說裝飾著模式(Decorator)
阿新 • • 發佈:2018-09-02
ont 擴展 技巧 形式 right auto left write n)
前言:裝飾者模式,又叫做裝飾器模式.顧名思義,就是給對象包裹一層,包裝。讓它變成你喜歡的對象。這種模式在我們開發中經常會用到,它是一種處理問題的技巧,即不讓程序死板,也可以擴展程序。
(一)何時能用到它》》》
1.需要給類一個擴展,或者給類附加一個職責。
2.動態的給類添加一個功能,這些功能可以動態得撤銷。
3.當不能采用子類進行擴展的時候。
這一文中,我們以主要的3來舉例說明的。
(二)裝飾器的結構圖》》》
IAction:裝飾器標準接口,裝有裝飾器都要實現它。
DelegateAction:裝飾類,用來實現IAction插口的功能,並對外部提供另一種表現形式。
StandardAction:標準實現類,用來實現IAction插口的功能,對其展示也是以IAction接口為準的
Implement:對外公開的調用類,它向外部公開兩種接口方法,一是IAction接口標準,一是Action<int> 委托標準。
裝飾器的C#實現
IAction.cs
#region 裝飾著模式 public interface IAction { void Pring(int a); } #endregion
DelegateAction.cs
public classDelegateAction:IAction { Action<int> _action; public void Pring(int a) { _action(a); } public DelegateAction(Action<int> action) { _action = action; } }
Implement.cs
public class Implement {public void Run(IAction action) { action.Pring(10); } public void Run(Action<int> action) { new DelegateAction(action).Pring(10); } }
standarAction.cs
public class standarAction : IAction { public void Pring(int a) { Console.Write("標準實現裝飾器"+a); } }
調用:
static void Main(string[] args) { Implement implement = new Implement(); implement.Run((a) => Console.Write(a)); implement.Run(new standarAction()); }
今天俺要說一說裝飾著模式(Decorator)