【问题标题】:Java: Creating an empty interface to access different classes from one attribute?Java:创建一个空接口以从一个属性访问不同的类?
【发布时间】:2015-07-21 22:25:45
【问题描述】:

我正在创建一个 FreeCell 游戏,我希望它在游戏结束时打印出用户的动作。所以解决方案是 Move[]。 Move 类如下所示:

public class Move
{

   private Card card;
   private Location source;
   private Location target;

   public Move(Card card, Location source, Location target)
   {
      this.card = card;
      this.source = source;
      this.target = target;
   }
}

我希望 Location 能够在 FreeCell 游戏中存储三种不同类型的位置:Cells(可以容纳 1 张牌)、Cascades(发牌的地方)和 Foundations(其中放置卡片以解决游戏)。所以我需要 Location 来存储 Cell、Cascade 和 Foundation 类的对象。但是这些类并不都具有它们之间共享的任何属性或方法,因此父类没有多大意义。此外,Cascade 已经扩展了 LinkedList 以避免在创建 LinkedList 数组时出现警告,并且它不能扩展两个父类。

那么有没有一个优雅的解决方案呢?我应该创建一个名为 Location 的空白界面,还是有一个我没有想到的更简单的 OOP 方面可以在这里使用?

【问题讨论】:

    标签: java class oop interface


    【解决方案1】:

    您的Locations 只是一小部分固定值,对吧:
    单元格 1 至 4
    基础 1 至 4
    级联 1 到 8

    你可以使用enums。

    public interface Location {}
    
    public enum Cell implements Location { ONE, TWO, THREE, FOUR }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多