zoukankan      html  css  js  c++  java
  • 设计模式:装饰模式

    装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

    namespace Decorator
    {
        public abstract class Component
        {
            public abstract void Operation();
        }
        public class ConcreteComponent:Component
        {
            public override void Operation()
            {
                Console.WriteLine("具体对象的操作");
            }
        }
        public abstract class Decorator:Component
        {
            protected Component component;
            public void SetComponent(Component component)
            {
                this.component = component;
            }
            public override void Operation()
            {
                if(component!=null)
                {
                    component.Operation();
                }
            }
        }
        public class ConcreteDecoratorA:Decorator
        {
            private string addedState;
            public override void Operation()
            {
                base.Operation();
                addedState = "New State";
                Console.WriteLine("具体装饰对象A的操作");
            }
        }
        public class ConcreteDecoratorB : Decorator
        {
            public override void Operation()
            {
                base.Operation();
                AddedBehavior();
                Console.WriteLine("具体装饰对象B的操作");
            }
            private void AddedBehavior()
            {
    
            }
        }
    }
    View Code

    测试代码:

                ConcreteComponent c = new ConcreteComponent();
                ConcreteDecoratorA d1 = new ConcreteDecoratorA();
                ConcreteDecoratorB d2 = new ConcreteDecoratorB();
                d1.SetComponent(c);
                d2.SetComponent(d1);
                d2.Operation();
  • 相关阅读:
    web标准化布局
    最全前端资源汇集
    SVN使用教程
    FullPage.js中文帮助文档API
    如何选字体(font-family)
    网站禁止复制类型的属性
    Web前端学习方向
    div 命名规范! (野路子出来的好好看看)
    浏览器兼容处理
    JSONP 跨域问题
  • 原文地址:https://www.cnblogs.com/uptothesky/p/5253118.html
Copyright © 2011-2022 走看看