【发布时间】:2015-10-17 03:12:42
【问题描述】:
我正在编写一个小的 Java 程序,它随机分发扑克牌,然后将它们显示在屏幕上的窗口中。
自从我使用 NetBeans 以来,GUI 就为我启动了,我一直在编写随机选择卡片的方法,设置一个数组来存储卡片是否已经发牌等等,所有在 NetBeans 构建 JFrame 时为我设置的同一类中。
我想将所有非 GUI 代码移动到它自己的类中,然后根据需要将数据传回 GUI 类以显示卡片,但我不确定共享数据的最佳方式两个班级之间。
我知道 set/get 方法,我知道我可以创建公共类级变量,但我一直在阅读的所有内容都告诉我要尽可能避免这两种方法。
现在我有一个方法可以为每张发牌生成一个 1 到 52 之间的整数。 1 = 黑桃 A,2 = 黑桃 2,等等。一旦 GUI 有了那个数字,它就可以在屏幕上的适当位置显示适当的卡片(或者至少在我编写 GUI 编码后它能够事情的一面)。如果我希望将该整数值传递给 GUI 类,然后根据该值在屏幕上显示特定的卡片,我应该怎么做?
在我看来,公共变量和简单的 get 方法一样可以让这件事变得简单……但为了避免这些选项,还有其他方法吗?
如果有帮助,我可以提供代码 sn-ps。
【问题讨论】:
-
“但是我一直在阅读的所有内容都告诉我要尽可能避免两者” - 真的吗?大多数 OO 原则建议避免使用公共字段(变量)并更喜欢通过方法访问
-
为什么要避免使用 get 方法?
-
GUI 应该让您生成该值的类,GUI 不应该关心该值是如何生成的,只是它是以一致且记录在案的方式生成的。据我所知,这需要一个方法(因为它是一个计算值)。另一种解决方案是使用观察者模式,其中 GUI 注册对生成代码的兴趣,当生成一个值时,它会通过(Swing 调用的)监听器通知它,但在我看来,这对于您的目的来说似乎有点过分了
-
根据经验 - 公共变量是禁忌,但访问私有变量或执行操作的公共方法是标准的。
-
我建议您做任何最简单的事情(这可能是公共变量),直到您对 Java(和编程)有足够的了解以了解为什么其他人不建议使用它们。 (最好自己找出为什么事情被认为是不好的)
标签: java swing user-interface netbeans