PowerPoint 或 Illustrator 等矢量图形应用程序的最佳实践设计模式/架构是什么?专门用于在复杂图形对象(父子关系、形状和布局上的几何约束)上构建工具-用户交互和操作。
关于以下方面的任何想法或经验:
最佳答案
Controller 的嵌套有限状态机。 View 与 Controller (MVC 或类似的)的分离。它总是对我有用。
更新:我有时间阅读您的链接。一些背景:我研究和研究这些类型的编辑器已经 25 年了。我的建议,嵌套 FSM 作为 Controller 、MVC 或类似的,可能被称为 super 设计模式,因为您可以看到这些设计组件多年来多次出现在不同的设计中,每次为不同的组件使用不同的名称。微软专利的荒谬之处在于这些想法非常古老,只是赋予了新名称。如果您查看您提供的其他链接,您会发现有很多相似之处(EditPart == Behavior == Finite State Machine)。
所以 super 模式如下:嵌套有限状态机,如哈雷尔状态图。 super 状态处理跨多个子状态的常见行为;子状态处理更具体的行为。超状态可以实现为父类(super class),也可以实现为单独的对象实例。无论哪种情况,在整个应用程序中,抽象地都有一个当前状态,即子状态。如果子状态无法处理输入消息,则它会进入 super 状态(仅使用继承或将消息传递给堆栈中的另一个对象)。
状态转换由输入消息触发。输入消息可能是用户对装饰的操作(装饰可能被装饰为要调用的子状态的名称)。或者它可能是一个键盘事件。您可能会看到一条名为命令的输入消息。
每个状态都有一个入口方法,它执行初始化,还有一个导出方法,它撤消任何未提交的更改。更改通常使用事务提交,提交的事务堆栈构成撤消堆栈。
关于model-view-controller - 矢量图形编辑器的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252287/