我正在使用Java创建一个控制台实现的5张牌扑克游戏。
我有一个名为HandOfCards的类,它将处理单个手牌的过程 - 给玩家发牌、下注和确定赢家。我还有一个名为GameOfPoker的类,它可以容纳多个扑克牌手,代表一局扑克游戏的全部。
我将如下构建GameOfPoker的HandOfPoker实例:
HandOfPoker handOfPoker = new HandOfPoker(List<PokerPlayer> players, DeckOfCards deck);
我的问题是,在GameOfPoker中,我应该实例化一个新对象还是在HandOfPoker中定义一个重置方法:
public class HandOfPoker{
public void reset(List<PokerPlayer> players) {
this.players = players;
}
}
public class GameOfPoker{
public play() {
// carry out game
// then after a hand, I could either instantiate:
//handOfPoker = new HandOfPoker(players, deck);
// or I could reset:
handOfPoker.reset();
// now I'm ready to play another hand.
}
}
直觉上,reset() 方法似乎更好——因为实例化一个新对象会更加昂贵,需要创建一个新的实例并销毁旧实例。
这里有最佳实践方法吗,还是两种方法之间的区别非常小,所以并不重要?
0
/false
/null
。如果这些值对于新实例来说是好的,手动重置字段可能实际上比创建新对象更昂贵。但是,这是不必要的微观优化,应该避免,即不要考虑它,而是专注于程序逻辑,如本答案中所述。 - Andreas