首页 > 其他 > 详细

设计模式(五)装饰模式

时间:2020-01-02 20:59:44      阅读:99      评论:0      收藏:0      [点我收藏+]

装饰模式

为已有模块动态添加更多功能的方式,比子类更加灵活。能够把类中起到装饰作用的逻辑从主逻辑中取出来,简化原有类。e.g. 奶茶可以添加布丁,珍珠...
需要注意的是装饰对象直接需要独立,各自关注各自的功能,否则会有添加的先后顺序影响。
技术分享图片



    class MilkTea
    {
        private string name;

        public MilkTea()
        {
        }

        public MilkTea(string name)
        {
            this.name = name;
        }
        public virtual void Show()
        {
            Debug.LogFormat("{0}添加了", name);
        }
    }
    class Decorator : MilkTea
    {
        protected MilkTea person;
        public void Decorate(MilkTea de)
        {
            person = de;
        }

        public override void Show()
        {
            if (person != null)
            {
                person.Show();
            }
        }
    }
    class Test1 : Decorator
    {
        public override void Show()
        {
            base.Show();
            Debug.LogFormat("珍珠");
        }
    }
    class Test2 : Decorator
    {
        public override void Show()
        {
            base.Show();
            Debug.LogFormat("布丁");
        }
    }

    private void Awake()
    {
        MilkTea p = new MilkTea("奶茶");
        Test1 a = new Test1();
        Test2 b = new Test2();
        a.Decorate(p);
        b.Decorate(a);

        b.Show();
    }

设计模式(五)装饰模式

原文:https://www.cnblogs.com/ZeroyiQ/p/12134643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!