小编bru*_*875的帖子

我真的应该像瘟疫一样避免这种情况吗?

我正在开发一种棋盘游戏,包括将棋子放入牢房.只要在那里没有任何对手的棋子,你就可以把棋子放在棋盘上的任何地方(包括被占用的牢房).

现在我已经考虑过两种替代方法:

  • 没有instanceof:

RedPiece.class片段

public boolean isAlly(RedPiece p) {
    return true;
}

public boolean isAlly(BluePiece p) {
    return false;
}

public boolean isAlly(GreenPiece p) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

显然,如果我想添加一种新颜色,我必须向每个类添加另一种方法.

  • 使用instanceof:

Piece.class片段

public boolean isAlly(Piece that) { 
    return this instanceof that;
}
Run Code Online (Sandbox Code Playgroud)

后来这种方法对我来说似乎更好,因为在添加新颜色时我不需要做任何事情.

当然对于我的游戏来说这不是问题,因为所有部分都是相同的,我可以只创建一个枚举而不是新的类.但是,如果红队突然被赋予蓝色和绿色没有的特殊能力呢?

也许解决方案是添加一个字符串属性,说明他们属于哪个团队(红色玩家和蓝色玩家),但现在它的设计使得红色部分只属于红队.字符串"RED"绝对是您可以从课程中获得的冗余信息.

总结:在这里使用instanceof是否合理?谁能想到更好的方法?

java instanceof

0
推荐指数
1
解决办法
141
查看次数

标签 统计

instanceof ×1

java ×1