矢量图形编辑器的设计模式

时间:2011-03-09 21:18:14

标签: model-view-controller design-patterns architecture editor vector-graphics

PowerPoint或Illustrator等矢量图形应用程序的最佳实践设计模式/体系结构是什么?专门用于构建工具 - 用户交互和对复杂图形对象的操作(父子关系,形状和布局的几何约束)。

对以下内容的任何想法或经历:

  1. 行为 - 装饰者 - 行为堆栈/服务 - 查看 - 查看模型Microsoft

  2. EditPolicy - EditPart - 查看 - 模型GEF

1 个答案:

答案 0 :(得分:3)

控制器的嵌套有限状态机。从控制器(MVC或类似)分离视图。它总是对我有用。

更新:我有时间阅读您的链接。一些背景:25年来,我一直在研究和研究这些类型的编辑。我的建议,嵌套的FSM作为控制器,MVC或类似的,可能被称为超级设计模式,因为您可以看到这些设计组件多年来出现多次,在不同的设计中,每次使用不同的组件不同的名称。微软专利的荒谬之处在于这些想法非常陈旧,只是给出了新名称。如果你查看你提供的其他链接,你会发现有很多相似之处(EditPart == Behavior == Finite State Machine)。

所以超级模式如下:嵌套有限状态机,如Harel状态图。超级国家处理许多子国家的共同行为;子状态处理更具体的行为。超级状态可以实现为超类,也可以实现为单独的对象实例。在任何一种情况下,在整个应用程序中,抽象地说你有一个当前状态,即子状态。如果子状态无法处理输入消息,则它将进入超级状态(仅使用继承或将消息传递给堆栈中的另一个对象)。

状态转换由输入消息触发。输入消息可能是装饰品上的用户操作(装饰品可能被装饰为要调用的子状态的名称)。或者它可能是键盘事件。您可能会看到一条名为命令的输入消息。

每个州都有一个入口方法,它执行初始化和退出方法,从而反转任何未提交的更改。通常使用事务提交更改,并且一堆已提交的事务构成撤消堆栈。