2016-04-19 19 views
0

メンテナンス性を念頭に置いてオブジェクト指向の視点からこれを行う方法は混乱します。常に変化を考えるためにアプリケーションを設計するときに教えられました。だから私はデザインのために個人的なプロジェクトに時間を費やそうとしています。ちょっと後でそれを変更したいかもしれません。このアプリケーションは、Divisionという最新ゲームに触発されました。それは毎秒のダメージの計算機になります。異なるプロパティを持つオブジェクトを作成する

私が選んだテクノロジーは、Spring、REST、Hibernate、Angular.js 1.0とmavenです。おそらくブートストラップですが、私はバックエンドに集中しているため、この時点ではわかりません。私が理解しているこれらのテクノロジーは、このレベルのアプリケーションには本当に必要ではありませんが、私は学習目的でこれをやっています。

あなたはプロジェクトの内容を理解しているので、今私が持っている問題です。私は、POJOに関して、サーバオブジェクトの向きを変えるのに苦労しています。

私たちは武器と戦闘機を持っています。武器は異なるモッドと属性を持つことができます。アサルトライフルはスコープを持つことができますが、なぜショットガンにスコープがあるのか​​など、すべての武器が同じモッズを持つわけではありませんか?属性は武器では相対的に同じですが、武器の種類によって変わります。歯車の場合、歯車は、歯車の種類に基づいて異なる属性を有することができる。グローブには属性があり、ヒットチャンスを上げることができますが、バックパックには弾薬量を増やす属性があります。手袋は弾薬の属性を持つことができず、バックパックはクリティカルヒットチャンスを持つことはできません。

手袋とバックパックはどちらもギアですが、同じタイプのギアではありません。アサルトライフルとショットガンの両方が武器ですが、同じ種類の武器ではありません。私はギアと武器と呼ばれるスーパークラスを作成し、さまざまな武器をサブクラス化することを考えました。私はプロの観点からこれを行う方法とデザインにとって最高の学習体験として混乱しています。

+0

説明と同じ方法で、これらの関連付け/関係を表すモデルイメージを作成できます。できるだけ簡単に開始しますが、すべての「エンティティ」を含めるようにしてください。この[エンティティリレーションシップモデル](https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model)を使用すると、アプリケーションで作業したいオブジェクトモデルを視覚的に推論できます。 –

答えて

1

これはデコレータパターンのユースケースのようです。 https://sourcemaking.com/design_patterns/decorator

それも武器を使用して同様の例があります。

は、リンクを介して行くのです。

オブジェクトに動的に追加のプロパティを追加する場合は、基本的に装飾されています。

modDecorator(基本クラス)という型のデコレータを作成し、特定のモッズを拡張します。今ではこれらの改造を動的にあなたの武器に広告することができます。

私はMods/Weapons/gear/Attributesの種類にあまり慣れていないので、具体的な回答はできませんが、リンクを参照してください。

+0

デコレータは私が必要とするものに完全に合うでしょう。ありがとう、偉大なリソースです。私はそれをブックマークしています。 – Grim

0

武器と装備のスーパークラスを持つ最初のアイデアは、デザインのための優れた練習とまったく同じですね。

改造の場合、改造のためのプロパティのリストとして武器にプロパティを追加し、ジェネリックとインターフェイスを使用してどの種類の銃がどの種類の銃を持つことができるかを制限することができます。

ライフルクラスのすべてのサブクラスのスコープタイプのプロパティと同じように、その他のモッズの場合も同様です。

アイテムに装備されているオブジェクトに関してもこれを調べるとよいでしょう。

ベースダメージはどのような影響を受けますか?
ベースダメージは誰が負いますか?

関連する問題