在 Composite 对象上使用修饰器

Using a decorator on a Composite object

提问人:Shaharg 提问时间:6/23/2023 更新时间:6/23/2023 访问量:13

问:

我有一个 Composite 对象(树结构),我想添加一个 Decorator,该装饰器应用于树结构中的每个对象。这可能吗? 以下是几个用例:

具有函数 draw() 的复合形状。我想应用“蓝色”装饰器,这样当我调用“draw”时,所有子形状都绘制为蓝色。

高级(可能还需要 Visitor 模式):一个复合 MathExpression,其中叶子是数字,内部节点是操作。我想添加一个装饰器,每当它遇到一个数字时,它就会递增它,每当它遇到一个操作时,它就会使结果加倍。例如,如果表达式是 (3+5)-2,则修饰表达式将为 2*(2*((3+1)+(5+1))-(2+1))

装饰器 复合 访客模式

评论


答: 暂无答案