[英]Creating a Deck Class extending Stack
首先,讓我說,這與其說是如何使它起作用,不如說是一個好的實踐問題。
我想使用自定義shuffle()方法實現一副紙牌(在很多游戲中,例如TCG游戲中都可以看到)...目前,它使用標准庫方法,但是將來可能會改變。
編碼:
package model;
import java.util.Collections;
import java.util.Stack;
/**
*
* @author Frank
*/
public class Deck<T> extends Stack<T> {
public void shuffle() {
Collections.shuffle(this);
}
}
我使用它的當前代碼:
private Deck<Card> deck;
只是想知道這是否是一個好習慣,渴望聽到答案。
不,這不是一個好習慣。 您的Deck
類應該包含一個Stack
,而不應該是一個Stack
。
我不確定您是否仍要Stack
。 您更可能需要ArrayList<Card>
或類似的東西。
我最好在這里使用委托而不是繼承。 擴展堆棧會使您永遠陷入困境,而委派則使您可以輕松地用其他東西替換堆棧。
此外,擴展集合通常不是最佳實踐。 Java 8將向集合中引入很多新事物,這可能會破壞您的實現或邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.