模拟装饰者模式

 /*
    这里不要自己安装自己.否则无限循环递归就出不去了.
     */
    //这里注意.不要自己递归调用自己.

    /// <summary>
    /// 自己设计一下这个模式的操作.
    /// </summary>
    public class ComponentSpace //模拟装饰者模式
    {

        public abstract class Component
        {
            public abstract void OperationMethod();

        }

        public class OnCreateComponent : Component
        {
            public override void OperationMethod()
            {
                Console.WriteLine("组件C");
            }
        }


        public abstract class DecoratorComponent : Component
        {
            protected Component _component;
            public override void OperationMethod()
            {
                if (_component != null)
                {
                    _component.OperationMethod();
                }
            }

            public void setCompnent(Component component)
            {
                _component = component;
            }

        }

        //创建两个装饰器
        public class DecoratorA : DecoratorComponent
        {
            public override void OperationMethod()
            {
                base.OperationMethod();
                Addstring();
            }

            public void Addstring()
            {
                Console.WriteLine("我是组件安装A");
            }
        }

        public class DecoratorB : DecoratorComponent
        {
            public override void OperationMethod()
            {
                base.OperationMethod();
                Addstring2();
            }

            public void Addstring2()
            {
                Console.WriteLine("组件安装B");
                for (int i = 0; i < 10; i++)
                {
                    Console.Write($"{i}  ");
                }
                Console.WriteLine();
            }
        }

        public static void TestData()
        {
            ConsoleFormate.consoleFormate(() =>
            {
                OnCreateComponent c = new OnCreateComponent();
                DecoratorA a = new DecoratorA();
                DecoratorB b = new DecoratorB();

                a.setCompnent(c);
                //a.OperationMethod();

                b.setCompnent(a);
                b.OperationMethod();

            }, @"装饰者");
        }


    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值