欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#设计模式-装饰模式

程序员文章站 2022-06-13 13:49:56
...

装饰模式是为已有功能动态的添加更多功能的一种方式。
装饰模式最大的好处就是有效的把类的核心职责和装饰功能区分开。
一个穿衣服的装饰模式小demo
有一个小知识点,就是在C#中只有虚函数才能被重写与Java有一点小区别

//主要就是三个类 Person Finery Clothes
//Person 是被装饰类
//Finery是装饰类
//其他的Clothes是模块,也就是装饰被装饰类的类
using System;
namespace std
{
    class main
    {
        static void Main(string [] args)
        {
            Person sx = new Person("阿毛");
            Tshift tshift = new Tshift();
            Trouse tr = new Trouse();
            Cap cap = new Cap();
            tshift.Decorate(sx);
            tr.Decorate(tshift);
            cap.Decorate(tr);
            cap.show();
        }
    }
    class Person
    {
        public Person()
        {

        }
        string name;
        public Person(string name)
        {
            this.name = name;
        }
        public virtual void show()
        {
            Console.WriteLine("装扮着的{0}", this.name);
        }
    }
    class Finery : Person
    {
        Person component;
        public void Decorate(Person component)
        {
            this.component = component;
        }
        public override void show()
        {
            if(this.component != null)
            {
                this.component.show();
            }
        }

    }
    class Tshift : Finery
    {
        public override void show()
        {
            Console.WriteLine("T恤");
            base.show();
        }
    }
    class Trouse : Finery
    {
        public override void show()
        {
            Console.WriteLine("裤子");
            base.show();
        }
    }
    class Cap : Finery
    {
        public override void show()
        {
            Console.WriteLine("帽子");
            base.show();
        }
    }
}

测试结果
C#设计模式-装饰模式