簡體   English   中英

創建一個Deck類擴展堆棧

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM