我想在扑克中实现手牌范围,它基本上是一组两张牌(=手牌)。
由于一个范围可以容纳很多手,所以我想创建“默认”范围并从那里调整我的范围。我想按以下方式进行:
- 掌握我范围的范围类
- 为预定义范围创建内部枚举
有更好的方法吗?我将枚举嵌套在范围类中,以通过路径 Range.Predefined.* 提高可读性。尽管如此,感觉有点笨拙,尤其是我设置范围的部分。
public class Range{
ArrayList<Hand> range;
public Range(ArrayList<Hand> r){
this.range = r;
}
public void addHandToRange(Hand hand){
//add a hand to range
}
public void removeHandFromRange(Hand hand){
//remove a hand from range
}
public enum Predefined{
RANGE_1, RANGE_2, RANGE_3;
ArrayList<Hand> predefinedRange;
//some code to set up predefined ranges 1-3
public ArrayList<Hand> getRange() {
//getRange
}
}
}
然后我可以使用预定义的范围设置我的范围,然后从那里开始(但是有很多代码并且仅使用枚举作为其方法......):
Range myRange = new Range(Range.Predefined.RANGE_1.getRange());
我宁愿有一个像下面这样的解决方案。这需要将“Range”更改为 Enum 类型,我不想这样做(因为 Range 应该保持可变 - 并且应该避免可变枚举)。
Range myRange = PredefinedRange.RANGE_1;
我错过了显而易见的事情吗?
为什么需要使用枚举?
您可以让 Range 类保留一些公共静态最终 Range 变量。
public class Range{
public static final Range TOP_PAIR_RANGE = new Range(...)
public static final Range SUITED_CONNECTOR_RANGE = new Range(...)
public static final Range ACE_SUITED_RANGE = new Range(...)
...
}
那就参考一下吧
Range myRange = Range.TOP_PAIR_RANGE;