博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...
阅读量:5951 次
发布时间:2019-06-19

本文共 2227 字,大约阅读时间需要 7 分钟。

装饰模式(Decorator Pattern):

动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。

模式角色与结构:

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharp.DesignPattern.DecoratorPattern{    class Program    {        static void Main(string[] args)        {            Component component;            Component componentDecorator;            component = new Window();            componentDecorator = new ScrollBarDecorator(component);            componentDecorator.display();            component = new TextBox();            componentDecorator = new BlackBorderDecorator(component);            componentDecorator.display();            Console.ReadLine();        }    }    // 抽象构件    abstract class Component    {        public abstract void display();    }    // 具体构件    class Window : Component    {        public override void display()        {            Console.WriteLine("Window...");        }    }    class TextBox : Component    {        public override void display()        {            Console.WriteLine("TextBox...");        }    }    // 抽象装饰类    class ComponentDecorator : Component    {        private Component component; // 维持对抽象构件类型对象的引用        public ComponentDecorator(Component component) // 注入抽象构件类型的对象        {            this.component = component;        }        public override void display()        {            component.display();        }    }    // 具体装饰类    class ScrollBarDecorator : ComponentDecorator    {        public ScrollBarDecorator(Component component)             : base(component)        {           }        public override void display()        {            this.SetScrollBar();            base.display();        }        public void SetScrollBar()        {            Console.WriteLine("Add Scroll Bar...");        }    }    class BlackBorderDecorator : ComponentDecorator    {        public BlackBorderDecorator(Component component)            : base(component)        { }        public override void display()        {            this.SetBlackBorder();            base.display();        }        public void SetBlackBorder()        {            Console.WriteLine("Add Black Border...");        }    }}

 

转载于:https://www.cnblogs.com/thlzhf/p/3993371.html

你可能感兴趣的文章
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
密码概述
查看>>
jQuery的技巧01
查看>>