1. 程式人生 > >今天俺要說一說裝飾著模式(Decorator)

今天俺要說一說裝飾著模式(Decorator)

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 class
DelegateAction: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)