• 设计模式之—装饰模式<Decorate Pattern>


    以穿衣为例:

    Component类:可以通过ConcreteComponent类动态添加职责

    namespace Dacoration_Pattern.Class
    {
        abstract class Component
        {
            public abstract void Show();
        }
    }
    View Code

    ConcreteComponent类:定义了具体的职责

    namespace Dacoration_Pattern.Class
    {
        class ConCreteComponent:Component
        {
            private string name;
            public ConCreteComponent(string name)
            {
                this.name = name;
            }
            public override void Show()
            {
                Console.WriteLine("装扮的{0}",name);
            }
        }
    }
    View Code

    Decorator类:

    namespace Dacoration_Pattern.Class
    {
        class Decorator:Component
        {
            protected Component person;
            public void Decorate(Component person)
            {
                this.person = person;
            }
            public override void Show()
            {
                if (person != null)
                {
                    person.Show();
                }
            }
        }
    }
    View Code

    ConcreteDecoratorA类:

    namespace Dacoration_Pattern.Class
    {
        class ConCreteDecoratorA:Decorator
        {
            public override void Show()
            {
                Console.WriteLine("大T恤");
                base.Show();
            }
        }
    }
    View Code

    ConcreteDecoratorB类:

    namespace Dacoration_Pattern.Class
    {
        class ConcretrDecoratorB:Decorator
        {
            public override void Show()
            {
                Console.WriteLine("跨裤");
                base.Show();
            }
        }
    }
    View Code

    ConcreteDecoratorC类:

    namespace Dacoration_Pattern.Class
    {
        class ConcreteDecoratorC:Decorator
        {
            public override void Show()
            {
                Console.WriteLine("皮鞋");
                base.Show();
            }
        }
    }
    View Code

    客户端代码(TestMain)类:

    namespace Dacoration_Pattern
    {
        class TestMain
        {
            static void Main(string[] args)
            {
                ConCreteComponent person = new ConCreteComponent("张三");
                Console.WriteLine("第一种装扮:");
                ConCreteDecoratorA ConA = new ConCreteDecoratorA();
                ConcretrDecoratorB ConB = new ConcretrDecoratorB();
                ConcreteDecoratorC ConC = new ConcreteDecoratorC();
                ConA.Decorate(person);
                ConB.Decorate(ConA);
                ConB.Show();
    
                ConCreteComponent person1 = new ConCreteComponent("李四");
                Console.WriteLine("第二种装扮:");
                ConB.Decorate(person1);
                ConC.Decorate(ConB);
                ConC.Show();
                Console.ReadLine();
            }
        }
    }
    View Code

    装饰模式结束!

    要么忍,要么狠,要么滚!
  • 相关阅读:
    java SE :文件基本处理 File、FileFilter、FileNameFilter
    java SE :标准输入/输出
    java EE :GenericServlet 抽象类、ServletConfig 接口
    java EE :Servlet 接口
    java EE : http 协议响应头部信息验证
    java EE : http 协议之请求报文、响应报文
    java EE : tomacat 基础
    06 java 基础:java 循环 递归
    05 java 基础:运算符、程序结构
    04 java 基础:数据类型
  • 原文地址:https://www.cnblogs.com/zxd543/p/3241762.html
Copyright © 2020-2023  润新知