【问题标题】:Should I use static nested classes to represent abilities in a game?我应该使用静态嵌套类来表示游戏中的能力吗?
【发布时间】:2013-09-10 18:06:18
【问题描述】:

我正在制作一款卡牌游戏,其中各种卡牌都可以使用静态定义的能力。我认为没有必要将这些能力直接实例化为对象,因为它们的所有字段和方法都是不同的。我的问题是使用静态嵌套类来表示这些能力是否是个好主意,或者是否有更有效的替代方法?

class Ability {
...
    static class Strike {
    ...
    }

    static class Detonate {
    ...
    }

    static class Dodge {
    ...
    }
...
}

【问题讨论】:

  • Strike 还是Ability
  • “更有效”没有任何意义。没有任何背景,很难告诉你什么是正确的设计。 (例如,AbilityStrike 等将如何以及在何处使用?)
  • 也就是说我的看法是这没关系。试图隐藏不属于 API 表面的每个类对我来说似乎过于迂腐。

标签: java oop inheritance composition


【解决方案1】:

不,您应该在单独的 .java 文件中扩展 Ability 类。

public class Strike extends Ability
{ ... }
public class Detonate extends Ability
{ ... }
public class Dodge extends Ability
{ ... }

能力的共同点应该放在Ability类中。

【讨论】:

    【解决方案2】:

    SotiriosDelimanolis 的评论应该给你一个提示“罢工 IS 能力”而不是“能力 HAS A 罢工”

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多