开头
今天小编带大家一起学习装饰者模式,当大家看到装饰两个字以后会不会想到房子的装修,房子本来就具有遮风避雨的功能,为了让房子更加温馨舒适,我们可以增加一些家具,可以增加一些沙发。有一天觉得室内环境不美观,我们给墙壁增添一些壁纸,随着我的的喜好可以给我们的房子动态的增加一些功能,挂件。让我们的家增加一些特殊的功能,装饰者模式就好比室内装修一样,动态的给对象增加职责,扩充原有类的功能。
内容
装饰者模式可分为四大角色:分别为Component(抽象构件)、 ConcreteComponent(具体构件)、Decorator(抽象装饰类)、 ConcreteDecorator(具体装饰类)。
Component(抽象构件):房子类,是抽象装饰类和具体构件类的父类,声明了基本对象的方法
ConcreteComponent(具体构件):Jason的房子,抽象构架子类,对象具体方法的实现。
Decorator(抽象装饰类):可以桌子,椅子、壁纸等等,给具体构件增加职责,扩充其职能。
ConcreteDecorator(具体装饰类):这里指的是桌子,椅子之类的,继承抽象装饰类,实现其具体职能。
我们以房子装修为例子:
static void Main(string[] args)
{
//实例化自己的房子
House house = new JasonHouse();
//打算购买桌子
Decorator HouseDesk = new Desk(house);
//添加桌子
HouseDesk.Print();
Console.WriteLine("");
}
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 |
缺点:如果装饰的对象过多,就会造成更多的系统资源被占用,装饰要适当,如果家里增加满满的东西,势必造成家里环境环混乱,仿佛学习到了中庸之道。
适用场景:动态的给某一个对象增加职能,如果继承不方便扩展对象职能,装饰着模式会更加灵活哦。希望大家可以对比一下桥接模式。
关于今天的学习就先分享到这里,如果本篇博客对于初学者的您来说有一定的帮助,请小编记得点赞哦。