文章出處
文章列表
裝飾器模式,也叫又叫裝飾者模式,顧名思義,將一個對象進行包裹,包裝,讓它變成一個比較滿意的對象,這種模式在我們平時項目開發中,經常會用到,事實上,它是處理問題的一種技巧,也很好的擴展了程序,讓程序代碼不那么死板!
何時能用到它?
1. 需要擴展一個類的功能,或給一個類添加附加職責。
2. 需要動態的給一個對象添加功能,這些功能可以再動態的撤銷。
3. 需要增加由一些基本功能的排列組合而產生的非常大量的功能,從而使繼承關系變的不現實。
4. 當不能采用生成子類的方法進行擴充時。
其中我們認為第四種使用是比較巧妙的,這一講中,主要是以第四講為例來說明的
裝飾器模式的結構圖
裝飾器模式實現說明
IAction:裝飾器標準接口,所有裝飾功能都要實現它
DelegateAction:裝飾類,用來實現IAction插口的功能,并對外部提供另一種表現形式
StandardAction:標準實現類,用來實現IAction插口的功能,對外展示也是以IAction接口為準的
Implement:對外公開的調用類,它向外界公開兩種接口方法,一是IAction接口標準,一是Action<int>委托標準
裝飾器模式的C#實現
#region 裝飾模式 public interface IAction { void Print(int a); } sealed class DelegateAction : IAction { Action<int> _action; public DelegateAction(Action<int> action) { _action = action; } public void Print(int a) { _action(a); } } public class standardAction : IAction { public void Print(int a) { Console.WriteLine("標準實現裝飾器" + a); } } public class Implement { public void Run(IAction action) { action.Print(10); } public void Run(Action<int> action) { new DelegateAction(action).Print(10); } } #endregion
調用的代碼
Implement implement = new Implement(); implement.Run((a) => Console.WriteLine(a));//委托Action<int>調用法 implement.Run(new standardAction());//IAction對象調用法
文章列表
全站熱搜