3

我正在为 autocad 编写一个插件,但我遇到了一个设计问题。我认为可以通过设计模式来解决。

我正在尝试绘制一张桌子,桌子有两个部分,一个框架和一个顶部/表面。所以我有这 3 个课程:

  • Draw:该类验证用户输入并请求插入点,创建框架和曲面,并将新创建的实例插入到 AutoCAD DB 中。
  • Frame:根据长度和深度计算框架。
  • 表面:根据长度和深度计算表面。

我的问题是,如果用户给出的长度值大于最大值,那么我必须生成 2 个或更多表面。表面类还必须知道哪个表面是第一个和最后一个。并且Draw类还应该知道第一个在哪里结束以放置第二个表面。

我现在所做的是将名为 calcNumberOfSurface(int len) 的方法放入 Draw 类中,并在此方法中迭代表面的数量以每次创建 Surface 类的新状态。这个解决方案也有两个问题,Surface 类不知道它是第一个还是最后一个。并且无法定义第一个 Surface 的结束位置。我必须在 Draw 类中实现这一点。

是否有任何最佳实践或设计模式可以解决这个问题?

4

1 回答 1

3

我同意普雷斯顿的观点。在您在这里了解设计模式之前,我认为您必须首先考虑所有必需的类以及每个类将具有哪些成员。对于您的示例:

  • 结束位置不是 Surface 类的成员吗?
  • 另一类可能表示List<Surface>(表面列表)。此类将包含第一个和最后一个 Surfaces。
于 2012-12-10T06:22:19.063 回答