创建扩展堆栈的Deck类

时间:2013-03-28 15:50:32

标签: java stack extending

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

我想实现一副牌(如许多游戏中所见,例如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;

只是想知道这是不是很好的做法,渴望听到答案。

2 个答案:

答案 0 :(得分:3)

不,这不是好习惯。您的Deck课程应该包含一个Stack,它不应 一个Stack

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

答案 1 :(得分:0)

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

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