1

首先让我说,这与其说是如何让它发挥作用的问题,不如说是这是否是好的做法的问题。

我想使用自定义的 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;

只是想知道这是否是一种好习惯,渴望听到答案。

4

2 回答 2

3

不,这不是一个好习惯。你的Deck类应该包含一个Stack,它不应该一个Stack

我不确定你是否想要Stack。您更有可能想要ArrayList<Card>或类似的东西。

于 2013-03-28T15:53:05.597 回答
0

我最好在这里使用委托而不是继承。扩展堆栈会让你永远坚持下去,而委托会让你轻松地用其他东西替换堆栈。

此外,扩展集合通常不是最佳实践。Java 8 会为集合引入许多新事物,这些新事物可能会破坏您的实现或逻辑。

于 2013-03-28T15:56:11.797 回答