Создание класса колоды, расширяющего стек
Прежде всего позвольте мне сказать, что это не столько вопрос о том, как заставить его работать, а скорее вопрос о том, является ли это хорошей практикой или нет.
Я хочу реализовать колоду карт (как видно во многих играх, например, в играх 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 ответа
Нет, это не очень хорошая практика. Ваш Deck
класс должен содержать Stack
не должно быть Stack
,
Я не уверен, что ты хочешь Stack
тем не мение. Скорее всего, вы хотите ArrayList<Card>
или что-то вроде этого.
Я бы лучше использовал делегирование вместо наследования здесь. Расширение стека делает вас застрявшим в нем навсегда, а делегирование позволит вам легко заменить стек другим.
Кроме того, обычно не рекомендуется расширять коллекции. Java 8 представит коллекциям много нового, что может нарушить вашу реализацию или вашу логику.