首先让我说这不是一个如何让它发挥作用的问题,更多的是这是否是好的做法。
我想实现一副牌(如许多游戏中所见,例如TCG游戏),使用自定义shuffle()方法...现在它使用标准库方法,但可能会改变未来。
代码:
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;
只是想知道这是不是很好的做法,渴望听到答案。
答案 0 :(得分:3)
不,这不是好习惯。您的Deck
课程应该包含一个Stack
,它不应 一个Stack
。
我不确定你是否想要Stack
。您更有可能想要ArrayList<Card>
或类似的东西。
答案 1 :(得分:0)
我最好在这里使用委托而不是继承。扩展堆栈会让你永远陷入困境,而委托会让你轻松地用其他东西替换堆栈。
此外,扩展集合通常不是最佳做法。 Java 8会为集合引入许多新东西,这可能会破坏您的实现或逻辑。