【发布时间】:2026-01-08 14:00:01
【问题描述】:
我想问一些关于装饰器模式的问题。
我正在尝试制作有关绘制形状的软件,例如:线条,矩形...... 当我点击表单中的“行”时,我想应用装饰器模式来生效......这是我的实现装饰器
class Composite
{}
class line, rect...: Composite
{}
interface UserCommand
{
void Excute();
}
class ClickStyle: UserCommand
{
Composite Concrete;
.....
}
class MoveStyle: UserCommand
{
Composite Concrete;
...
}
Composite Line = new Line();
if(LineClick)
Line = new BorderStyle(Line);
if(LineMove)
Line = new MoveStyle(Line);
....
To add Effect
但是当 User NotClick, NotMove 时如何移除这个 Effect 呢?
经验: 我的线条同时具有点击和移动效果,我点击矩形...如何从线条中移除效果?
【问题讨论】:
-
您在每次使用实例时构建它们。
-
这是我认为的第一个想法......但这并不好(许多实例会创建,我无法控制)。希望任何人都可以解释其他想法
-
我不明白你在说什么。您想添加应用某些效果的装饰器,并且还在寻找一种方法来移除装饰器(如果不再需要这些效果)?
标签: c# design-patterns decorator