Java:Wgets 控制绘图的最佳 OOP 行为

Java: Best OOP behaviour of Wgets controlling Drawings

我已经实现了这个简单的应用程序,展示了不同的排序算法。

但是我担心 OOP 设计,因为我有一个 class 用于控件(右侧)和另一个用于绘图(灰色面板)。我不知道如何沟通的问题,例如,这两个classes之间的按钮点击动作。我所做的看起来很脏而不是 OOP 是将必要的小部件作为参数传递给绘图 class,然后在那里实现动作列表。这似乎不是正确的做法。你能告诉我这里最好的做法是什么吗?

(这个问题可能会被关闭,因为你只能得到主观的答案,但无论如何......)

您的 Drawing class 负责根据提供给它的数据绘制柱状图。它不必了解屏幕右侧的小部件(classes?)。然而,它需要知道它可以处理什么样的数据并且必须以某种方式指定。在 OOP 中,您使用接口来定义该契约。在这种情况下,您可以有一个 DrawingDataProvider 接口和一个方法 GetData(其中 returns 结构中的数据由 Drawing class)。

然后右边的控件可以实现 DrawingDataProvider 接口,具体 GetData 方法返回正在排序的元素(可能由第三方 class在接口指定的结构中实现算法)。总而言之,您构建 Drawing class 将此实现作为参考传递。