我正在为 autocad 编写一个插件,但我遇到了一个设计问题。我认为可以通过设计模式来解决。
我正在尝试绘制一张桌子,桌子有两个部分,一个框架和一个顶部/表面。所以我有这 3 个课程:
- Draw:该类验证用户输入并请求插入点,创建框架和曲面,并将新创建的实例插入到 AutoCAD DB 中。
- Frame:根据长度和深度计算框架。
- 表面:根据长度和深度计算表面。
我的问题是,如果用户给出的长度值大于最大值,那么我必须生成 2 个或更多表面。表面类还必须知道哪个表面是第一个和最后一个。并且Draw类还应该知道第一个在哪里结束以放置第二个表面。
我现在所做的是将名为 calcNumberOfSurface(int len) 的方法放入 Draw 类中,并在此方法中迭代表面的数量以每次创建 Surface 类的新状态。这个解决方案也有两个问题,Surface 类不知道它是第一个还是最后一个。并且无法定义第一个 Surface 的结束位置。我必须在 Draw 类中实现这一点。
是否有任何最佳实践或设计模式可以解决这个问题?