设计模式 - 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
上一篇:设计模式 - 5) 代理模式
下一篇:设计模式 - 3) 单一、开放封闭、依赖倒置、里氏置换

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月08日 01时18分39秒