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)
  • 相关阅读:
    QPS的优化
    面试题
    py-redis
    集群化的部署
    RESTful设计
    python第三方库------jieba库(中文分词)
    csv文件读写处理
    python中的turtle库(图形绘画库)
    html中form表单的使用方法和介绍
    WC2019
  • 原文地址:https://www.cnblogs.com/qgbo/p/11516662.html
Copyright © 2011-2022 走看看