1

我的程序试图在 C# & WPF中绘制语法。我有:

1 DataStructure 项目,描述了应如何可视化的树形结构。树中的每个节点都与语法中的一个符号相关。顶部的节点定义了该非终结符的规则。

1 Drawer 项目,描述 WPF 中的用户控件。

我需要在我的数据结构中引用抽屉,因为当我遍历树时,我调用DataStructure.draw(); 在每个节点上。我还需要在我的抽屉项目中引用数据结构,以便我可以响应用户单击我的 GUI,它将更新数据结构。

这会产生循环依赖,我曾尝试使用控制器类,但我不知道:/

4

3 回答 3

3

您应该查看访问者模式,如下所述:

http://en.wikipedia.org/wiki/Visitor_pattern

这将允许您的数据结构项目接受任何类型的访问者,包括抽屉,但实际访问者的实现(在您的情况下是绘图逻辑)以您不想要的方式独立存在,没有依赖关系。

于 2009-12-12T16:48:43.170 回答
2

我需要在我的数据结构中引用抽屉,因为当我遍历树时,我调用 DataStructure.draw();

快速修复:遍历和调用HelperObject.Draw(DataStructure);

您的 DataStructure 不应该知道如何绘制自己,假装它必须在 WinForms 或其他平台中重复使用。HelperObject 可以是 GUI 的一部分。

于 2009-12-12T16:58:31.890 回答
0

从对象中提取通用功能,直到第三层抽象。您可能还想查看MVC,其中您的语法将是模型,您的抽屉将是视图,您仍然需要控制器。

于 2009-12-12T20:05:30.403 回答