前言 装饰,顾名思义,就是对现有的物件进行优化,比如加一些好看的物件等等。例如拍出来的照片需要进行美化,刚建好的房子需要装修等等。在软件设计中,有时候也需要对现有的类进行“装饰”,以满足客户的要求。 装饰模式的定义 装饰模式:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。 装饰模式能够实现动态的为对象添加新的功能,并且是从类的外部来增加新的功能。如果从类的内部进行添加新的功能,就违反了设计模式的开闭原则。装饰模式就是把复杂的工作简单化,分散化。 装饰模式的结构 装饰模式的UML类图如下所示: 可以看到装饰模式的主要角色有以下几个: 1.抽象构件:定义一个抽象接口以规范准备接收附加责任的对象。 2.具体构件:实现抽象构件,通过装饰角色为其添加一些职责 3.抽象装饰:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。 4.具体装饰:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。 装饰模式示例 接下来来看一下一个简单的实例吧。 示例简介:想必大家都知道绝地求生这款游戏吧,开局一条狗,啊呸,说顺口了,是开局一个人,要想活下来就必须捡装备来武装自己才能有能力对抗啊。 先构造一个抽象士兵类,起抽象构件角色 class AbSoldier //抽象士兵类 { public : virtual void