Decorator Pattern – C# 3.0 Design Patterns

來源:互聯網
上載者:User

Decorator Pattern屬於Structural Patterns

介紹:

Decorator pattern的作用是提供一種方式動態給一個對象添加新的職責或狀態,被裝飾的對象並不知道被“裝飾”了。A key implementation point in the Decorator pattern is that decorators both inherit the original class and contain an instantiation of it.

實現:

UML 類圖

    public interface IComponent    {        string Operation();    }    /// <summary>    /// 被裝飾者    /// </summary>    public class Component : IComponent    {        #region IComponent Members        public string Operation()        {            return "I'm a photo;";        }        #endregion    }    /// <summary>    /// 裝飾者A    /// </summary>    public class DecoratorA : IComponent    {        IComponent component;        public DecoratorA(IComponent component)        {            this.component = component;        }        #region IComponent Members        public string Operation()        {            return component.Operation() + "and decorated by DecoratorA";        }        #endregion    }    /// <summary>    /// 裝飾者B    /// </summary>    public class DecoratorB : IComponent    {        IComponent component;        public string AddedState = " and added state";        public DecoratorB(IComponent component)        {            this.component = component;        }        #region IComponent Members        public string Operation()        {            return component.Operation() + "and decorated by DecoratorB";        }        public string AddedBehavior()        {            return " and added behavior by DecoratorB";        }        #endregion    }    public class Client    {        public static void Display(string s, IComponent component)        {            Console.WriteLine(s + component.Operation());        }    }    [TestFixture]    public class DecoratorTest    {        [Test]        public void T1()        {            var component = new Component();            Client.Display(string.Empty, component);            var decoratorB = new DecoratorB(component);            Client.Display("hello!", decoratorB);        }    }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.