CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...
装饰模式(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
CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...相关推荐
- CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)...
策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy). 模式角色与结构: ...
- CSharp设计模式读书笔记(18):中介者模式(学习难度:★★★☆☆,使用频率:★★☆☆☆)...
中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,中介者模式又称为 ...
- CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.抽象工厂模式又称为Kit模式. 模式角色和结构图: 抽象工厂是指一 ...
- Head First设计模式读书笔记三 装饰模式(个人理解:包装模式)
本文示例代码材料源自Head First设计模式 以前整理自己整理的装饰模式的链接:https://blog.csdn.net/u011109881/article/details/58719049 ...
- 大数据之路读书笔记-10维度设计
大数据之路读书笔记-10维度设计 文章目录 大数据之路读书笔记-10维度设计 10.1 维度设计基础 10.1.1 维度的基本概念 10.1.2 维度的基本设计方法 10.1.3 维度的层次结构 10 ...
- 大话设计模式读书笔记
主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...
- 《Java8实战》读书笔记10:组合式异步编程 CompletableFuture
<Java8实战>读书笔记10:组合式异步编程 CompletableFuture 第11章 CompletableFuture:组合式异步编程 11.1 Future 接口 (只是个引子 ...
- Think in Java第四版 读书笔记10 第16章 数组
Think in Java第四版 读书笔记10 第16章 数组 数组和容器很像 但他们有一些差别 16.1 数组为什么特殊 数组与容器的区别主要在效率和存储类型 效率:数组是简单的线性序列 使得数组的 ...
- JavaScript设计模式读书笔记(一)= 创建型设计模式
全系列目录 JavaScript设计模式读书笔记(一)=> 创建型设计模式 JavaScript设计模式读书笔记(二)=> 结构型设计模式 JavaScript设计模式读书笔记(三)=&g ...
最新文章
- cnn stride and padding_Tensorflow学习笔记- 模型建立与训练篇(CNN)
- automaticallyAdjustsScrollViewInsets的作用
- php为什么在变量前加,php中变量前加、@等符号是什么意思?
- 牛客 共鸣问题(思维难题)
- python requests form data_python使用requests发送multipart/form-data请求数据
- git在远程关联和push时出现问题
- 陈松松:知道这5个视频营销流量入口,你不缺流量
- Android世界第一个activity启动过程
- indesign缩放图片被切割_InDesign怎么改变图片的大小
- 【正点原子STM32连载】第十章 STM32CubeMX简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 14. Floyd + 朴素版Dijkstra
- Python 识别图片文字( Tesseract 安装使用 )
- win10user文件夹迁移_Win10纯净版下迁移用户文件的技巧
- X86、X64和X86_64区别
- 2021年最值得推荐的29个开源软件,想提升自己的程序员赶快收藏
- 不能启动的问题 社区版安装后_Windows To Go安装使用手记
- Linux I/O重定向 dup dup2 系统调用
- 几组数据的相关性python_几的定义
- 实现n*n乘法口诀表
- 计算机如何默认一种打字法,怎么把电脑的输入法设置成默认的