3
我目前正在創建一個使用Java的5張牌抽獎撲克遊戲的控制檯實現。實例化新對象與實現重置()方法
我有一個名爲HandOfCards的類,它將處理個人手牌的處理過程 - 處理玩家的牌,投注和確定贏家。我還有一個名爲GameOfPoker的課程,它有助於多手牌,代表撲克遊戲的完整座標。
我將建HandOfPoker實例GameOfPoker這樣:
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