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();
  • 相关阅读:
    C#扩展方法
    asp.net mvc获取http body中的json
    ASP.NET MVC 获取表单数据
    @Html.DropDownList()的四种用法及自定义DropDownList扩展

    MVC5+EF6入门完整教程6:Partial View
    Day3.13组件切换
    Day3.12组件中的data和methods
    Day3.11定义私有组件
    Day3.10组件定义方式三
  • 原文地址:https://www.cnblogs.com/uptothesky/p/5253118.html
Copyright © 2011-2022 走看看