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

Alf*_*a07 5 architecture model-view-controller design-patterns editor vector-graphics

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

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

  1. 行为 - Adorner - 行为堆栈/服务 - 查看 - 查看模型Microsoft

  2. EditPolicy - EditPart - View - 模型GEF

Fra*_*man 3

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

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

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

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

每个状态都有一个入口方法(用于执行初始化)和一个出口方法(用于撤销任何未提交的更改)。更改通常使用事务提交,并且已提交事务的堆栈形成撤消堆栈。