
设计模式 - 4) 装饰模式
发布日期:2021-05-13 19:47:05
浏览次数:17
分类:博客文章
本文共 3458 字,大约阅读时间需要 11 分钟。
���������������������������������������������������������������������������������������������������������������
public class Person{ public string Name { get; set; } public Person() { } public Person(string name) { Name = name; } public virtual void Show() { Console.WriteLine(string.Format("���������{0}", Name)); }}public class Finery : Person{ protected Person component; public void Decorate(Person com) { component = com; } public override void Show() { if (component != null) { component.Show(); } }}public class Suit : Finery{ public override void Show() { Console.WriteLine("���������"); base.Show(); }} public class Tie : Finery{ public override void Show() { Console.WriteLine("���������"); base.Show(); }} public class TShirts : Finery{ public override void Show() { Console.WriteLine("��� T ���"); base.Show(); }}
���������������������������
Person per = new Person("mao");Console.WriteLine("������������������"); TShirts ts = new TShirts();Suit su = new Suit();Tie tie = new Tie();su.Decorate(per);tie.Decorate(su);ts.Decorate(tie);ts.Show();
������������������������������
Person perB = new Person("Mao");Console.WriteLine("������������������");TShirts tsB = new TShirts();Suit suB = new Suit();Tie tieB = new Tie();tsB.Show();tieB.Show();suB.Show();perB.Show();
������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
��� 2 ������������������
// ������public abstract class Shape{ public abstract void Draw();}// ������public class Circle : Shape{ public override void Draw() { Console.WriteLine("Draw Circle"); }}// ������public class Rectangle : Shape{ public override void Draw() { Console.WriteLine("Draw Rectangle"); }}// ���������������public class ShapeDecorator : Shape{ protected Shape decoratedShape; public void SetDecorate(Shape sh) { decoratedShape = sh; } public override void Draw() { decoratedShape.Draw(); }}// ������������������������public class RedShapeDecorator : ShapeDecorator{ public override void Draw() { base.Draw(); Console.WriteLine("Draw Red"); }} // ������������������������public class YellowShapeDecorator : ShapeDecorator{ public override void Draw() { base.Draw(); Console.WriteLine("Draw Yellow"); }}//������������Console.WriteLine("");Console.WriteLine("��� 1 ������������������");YellowShapeDecorator ys = new YellowShapeDecorator();ys.SetDecorate(new Circle());ys.Draw();Console.WriteLine("");Console.WriteLine("��� 2 ���������������������");RedShapeDecorator rs = new RedShapeDecorator();rs.SetDecorate(new Rectangle());rs.Draw();Console.WriteLine("");Console.WriteLine("��� 3 ������������������������");RedShapeDecorator rs2 = new RedShapeDecorator();rs2.SetDecorate(new Rectangle()); YellowShapeDecorator ys2 = new YellowShapeDecorator();ys2.SetDecorate(rs2);ys2.Draw();
������������ 1 ������������������Draw CircleDraw Yellow��� 2 ���������������������Draw RectangleDraw Red��� 3 ������������������������Draw RectangleDraw RedDraw Yellow
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月08日 01时18分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
搭建Vue项目步骤
2021-05-10
linux 编译出现的错误
2021-05-10
账号转账演示事务
2021-05-10
idea创建工程时错误提醒的是architectCatalog=internal
2021-05-10
SpringBoot找不到@EnableRety注解
2021-05-10
简易计算器案例
2021-05-10
在Vue中使用样式——使用内联样式
2021-05-10
Explore Optimization
2021-05-10
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2021-05-10
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
2021-05-10
小程序之wx:request(转)
2021-05-10
解决数据库报ORA-02289:序列不存在错误
2021-05-10
map[]和map.at()取值之间的区别
2021-05-11
成功解决升级virtualenv报错问题
2021-05-11
【SQLI-Lab】靶场搭建
2021-05-11
Xception 设计进化
2021-05-11
【Bootstrap5】精细学习记录
2021-05-11