绘图程序中的装饰模式

时间:2015-02-26 10:39:06

标签: c# design-patterns decorator

我想问一下装饰模式。

我正在尝试制作关于绘制形状的软件,如:直线,矩形.... 当我点击表格中的“线”时,我想应用装饰模式来生效....这是我的工具装饰器

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?

时如何删除此效果

精通: 我有线有点击和移动效果我点击矩形...如何从线上删除效果?

1 个答案:

答案 0 :(得分:0)

我认为在你的情况下使用状态模式会更好。每个州都有自己的装饰师。希望你能抓住一个主意:

Composite Line = new Line();
if(LineClick)
Line.SetActiveState();
if(LineMove)
Line.SetOnMoveState();

SetActiveState()方法可以如下所示:

void SetActiveState() {
  this.Composite.Decorator = this.Decorators[StateDecorators.Active];
}