我想问一下装饰模式。
我正在尝试制作关于绘制形状的软件,如:直线,矩形.... 当我点击表格中的“线”时,我想应用装饰模式来生效....这是我的工具装饰器
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
但是当用户NotClick,NotMove?
时如何删除此效果精通: 我有线有点击和移动效果我点击矩形...如何从线上删除效果?
答案 0 :(得分:0)
我认为在你的情况下使用状态模式会更好。每个州都有自己的装饰师。希望你能抓住一个主意:
Composite Line = new Line();
if(LineClick)
Line.SetActiveState();
if(LineMove)
Line.SetOnMoveState();
SetActiveState()方法可以如下所示:
void SetActiveState() {
this.Composite.Decorator = this.Decorators[StateDecorators.Active];
}