6

私がやっていることは、どういうわけかデザインが悪いのではないかと思っています。

私は物事のArrayListを持っています。このリストが常に存在する必要があります。これらのリストの 1 つだけが必要です。このリストを操作するメソッドもいくつかあります。したがって、私はすべてを静的にしました。

問題は、これらすべてが 1 つのクラスに隠されているため、文字通り、そのクラス内のすべてが static として宣言されていることです。クラス全体を静的にしたいので、これは少し奇妙に思えます。

Java ではクラス全体を静的にすることはできず、コード内の静的メソッドを最小限に抑えるように教えられたという事実は、私の頭の中でいくつかの警鐘を鳴らしていますが、正直なところ、なぜ何が起こったのか合理的な理由がわかりません。やってもうまくいかない。

編集:プログラムと、なぜ私がしたことをやろうと決めたのかについて、もう少し詳しく説明します。

プログラムの中心は、アイテム用とキャラクター用の 2 つのデータベースです。キャラクターはアイテムを一時的に所有する必要がありますが、すべてのアイテムは常にリストに表示できる必要があります。

アイテムの配列リストを作成し、各アイテムに使用可能または使用不可を示すブール値を持たせることにしました (すべてのアイテムと使用可能なアイテムの両方を簡単に表示できます)。各キャラクターには、アイテムの独自の小さな配列リストがあり、データベースからアイテムの複製を追加します。

他のクラスからデータベースにアクセスできるようにするために (これが私がアイデアを始めた場所です)、大きな配列リストを単純に静的にするという最も簡単なオプションを検討しました。複数が必要な場所。もちろん、リストを静的にしたので、それを操作する基本的なメソッドもすべて静的にする必要がありました。

私がやろうとしていることを行うためのより良い方法があると確信していますが、私は練習中の初心者です.

EDIT2:ああ、アイテムのリストが追加、削除され、プログラムの実行中にアイテムが変更されます。キャラクターがアイテムのコピーを受け取ることのもう 1 つの効果は、キャラクターが持っている限り、自分のアイテムが同じままであるということです。

4

4 に答える 4

2

あなたの更新に基づいて、古典的な「それはシングルトンです!」にたどり着きました。その後、誰かが「(ほとんど) シングルトンではない!」と指摘する必要があります。代わりに、これは通常の非静的、非シングルトン クラスである必要があり、アプリケーションの残りの部分は常に単一のインスタンスを使用するように記述されている必要があります。アプリケーションがモノのインスタンスを 1 つしか必要としないという事実は、そのモノをシングルトンにするわけではありません。「なぜシングルトンは悪か」「シングルトンのアンチパターン」を Google で検索すると、いくつかの記事が表示されます。

また、共有された変更可能な状態について話しているようにも聞こえます。これは、慎重に検討せずに侵入したくないワームのまったく別の (巨大な) 缶です。

于 2013-05-20T03:04:38.230 に答える
1

あなたのデザインが最適ではないことに同意する傾向があります。あなたの目標の多くは、オブジェクト指向プログラミングではなく、手続き型プログラミングに典型的なもののようです。

プロジェクトが静的な可変データに大きく依存していることがわかった場合は、なぜそれほど多くのグローバル データが必要なのかを自問する必要があります。

于 2013-05-20T04:11:01.563 に答える