首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于Decorator设计模式的Demo,欢迎来喷和来分享上你实用的Decorator模式

2012-09-25 
关于Decorator设计模式的Demo,欢迎来喷和来分享下你实用的Decorator模式我最近开始了解设计模式,其他的模

关于Decorator设计模式的Demo,欢迎来喷和来分享下你实用的Decorator模式
我最近开始了解设计模式,其他的模式还好,但是现在到Decorator模式,有点蒙,虽然让我很惊叹,但感觉实用上我本人没有碰到过什么好例子,也没有想到用该模式解决怎么样的问题比较OK。希望大家有用过的来分享下没用过的来喷下,探讨探讨。
以下是我自己写的一个简单的Demo,不足之处请大家指示。。。

C# code
class Program    {        static void Main(string[] args)        {            IPager pager = PagerFactory.GetPager();            pager.Show();        }    }    /// <summary>    /// 工厂类    /// </summary>    public class PagerFactory    {        public static IPager GetPager()        {            IPager pager;            pager = new MainPager();            pager = new FootPager1(pager);            pager = new HeadPager2(pager);            pager = new HeadPager1(pager);            return pager;        }    }    /// <summary>    /// 页面模块接口    /// </summary>    public interface IPager    {        void Show();    }    /// <summary>    /// 页面主要内容    /// </summary>    public class MainPager : IPager     {        public void Show()        {            Console.WriteLine("主页面内容");        }    }    /// <summary>    /// 页面模块Decorator基类    /// </summary>    public class PageDecorator : IPager    {        public IPager Pager;        public PageDecorator(IPager pager)        {            this.Pager = pager;        }                public void ShowPager()        {            if (this.Pager != null)            {                this.Pager.Show();            }        }        public virtual void Show(){ }    }    public class HeadPager1 : PageDecorator    {        public HeadPager1(IPager pager) : base(pager) { }        public override void Show()        {            Console.WriteLine("头部一内容");            base.ShowPager();        }    }    public class HeadPager2 : PageDecorator    {        public HeadPager2(IPager pager) : base(pager) { }        public override void Show()        {            Console.WriteLine("头部二内容");            base.ShowPager();        }    }    public class FootPager1 : PageDecorator    {        public FootPager1(IPager pager) : base(pager) { }        public override void Show()        {            base.ShowPager();            Console.WriteLine("尾部一内容");        }    }


[解决办法]
C#不需要装饰模式

参考:http://topic.csdn.net/u/20111213/15/6a11a24e-e3e5-480f-95c9-9a877bb3b688.html

热点排行