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

    装饰器模式的核心是有继承有组合,继承和组合的抽象类还是一个!

    用起来就是一层层的嵌套:

    BaseCharacter character = new Mage();
    character = new BaseDecorator(character);//
    character = new DecoratorHelmet(character);//
    character = new DecoratorShoulder(character);//
    character = new DecoratorBreastplate(caracter);
    character = new DecoratorCuish(character);
    character = new DecoratorGlove(character);

    能不能链式写呢?

     public class BaseDecorator : BaseCharacter
        {
            private BaseCharacter _BaseCharacter = null;
            public BaseDecorator(BaseCharacter character)
            {
                this._BaseCharacter = character;
            }
    
            public override void Show()
            {
                this._BaseCharacter.Show();
            }
            public BaseDecorator Decorat<T>() where T : BaseDecorator
            {
                return (T)Activator.CreateInstance(typeof(T), new object[] { this});
            }
        }

    这样就可以链式了!

     BaseCharacter character = new Mage();
    
     character = new BaseDecorator(character).Decorat<DecoratorHelmet>().Decorat<DecoratorCuish>();//
     character.Show();
    气功波(18037675651)
  • 相关阅读:
    ctrl+shift+k取消
    ERROR 1872
    swap
    mysql主从跳过错误
    undo
    gtid
    falcon监控指标
    连接数
    datetime与timestamp相互转换
    截取文件内容
  • 原文地址:https://www.cnblogs.com/qgbo/p/11516662.html
Copyright © 2011-2022 走看看