文章出處

返回目錄

裝飾器模式,也叫又叫裝飾者模式,顧名思義,將一個對象進行包裹,包裝,讓它變成一個比較滿意的對象,這種模式在我們平時項目開發中,經常會用到,事實上,它是處理問題的一種技巧,也很好的擴展了程序,讓程序代碼不那么死板!

何時能用到它?

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對象調用法

 返回目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()