结构型模式——装饰模式(Decorator Pattern)

开头

     今天小编带大家一起学习装饰者模式,当大家看到装饰两个字以后会不会想到房子的装修,房子本来就具有遮风避雨的功能,为了让房子更加温馨舒适,我们可以增加一些家具,可以增加一些沙发。有一天觉得室内环境不美观,我们给墙壁增添一些壁纸,随着我的的喜好可以给我们的房子动态的增加一些功能,挂件。让我们的家增加一些特殊的功能,装饰者模式就好比室内装修一样,动态的给对象增加职责,扩充原有类的功能。


内容   

  装饰者模式可分为四大角色:分别为Component(抽象构件)、 ConcreteComponent(具体构件)、Decorator(抽象装饰类)、 ConcreteDecorator(具体装饰类)

Component(抽象构件)房子类,是抽象装饰类和具体构件类的父类,声明了基本对象的方法

ConcreteComponent(具体构件):Jason的房子,抽象构架子类,对象具体方法的实现。

Decorator(抽象装饰类)可以桌子,椅子、壁纸等等,给具体构件增加职责,扩充其职能。

 ConcreteDecorator(具体装饰类):这里指的是桌子,椅子之类的,继承抽象装饰类,实现其具体职能。

我们以房子装修为例子:

结构型模式——装饰模式(Decorator Pattern)_第1张图片
客户端:
 static void Main(string[] args)
        {
            //实例化自己的房子
            House house = new JasonHouse();
            //打算购买桌子
            Decorator HouseDesk = new Desk(house);
            //添加桌子
            HouseDesk.Print();
            Console.WriteLine("");
        }

总结
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。
优点:动态的扩展对象的功能,灵活性强。

缺点:如果装饰的对象过多,就会造成更多的系统资源被占用,装饰要适当,如果家里增加满满的东西,势必造成家里环境环混乱,仿佛学习到了中庸之道。

适用场景:动态的给某一个对象增加职能,如果继承不方便扩展对象职能,装饰着模式会更加灵活哦。希望大家可以对比一下桥接模式。


 关于今天的学习就先分享到这里,如果本篇博客对于初学者的您来说有一定的帮助,请小编记得点赞哦。


你可能感兴趣的:(▶C/S,-----【设计模式】,设计模式)