关于Decorator设计模式的Demo,欢迎来喷和来分享上你实用的Decorator模式
关于Decorator设计模式的Demo,欢迎来喷和来分享下你实用的Decorator模式
我最近开始了解设计模式,其他的模式还好,但是现在到Decorator模式,有点蒙,虽然让我很惊叹,但感觉实用上我本人没有碰到过什么好例子,也没有想到用该模式解决怎么样的问题比较OK。希望大家有用过的来分享下没用过的来喷下,探讨探讨。
以下是我自己写的一个简单的Demo,不足之处请大家指示。。。
------解决方案--------------------
C#不需要装饰模式
参考:http://topic.****.net/u/20111213/15/6a11a24e-e3e5-480f-95c9-9a877bb3b688.html
我最近开始了解设计模式,其他的模式还好,但是现在到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.****.net/u/20111213/15/6a11a24e-e3e5-480f-95c9-9a877bb3b688.html