私は生物学者であり、Java と OOP に関する古い知識を改善しようとしています。私は、優れたソフトウェア設計とモジュール性を実践するためにゲームを書く練習をしています (なぜ楽しいものを作るのでしょうか?)。
アイデアはリスクに似ていますが、国際銀行を使用しています。各銀行は異なる通貨を扱っています。各通貨は異なる額面を使用します。銀行はすべて同じ機能 (残高、引き出し、預金、交換) を提供するため、インターフェースでうまく機能します。各通貨単位とその値を表す Enum を使用して、通貨を適切に記述することもできます。
これは私の非常に単純な例です。ゲーム内の郡ごとに新しい Country() オブジェクトを作成できます。
1) 国ごとにそれぞれの通貨を手動で指定する必要がありますか? 例えば:
Country Canada = new Country(CANCurrency);
これはかなり不格好に思えますが、これを行うためのより良い方法があるはずです。
2) County() を使用するクラスから、その (間接的に含まれる) Enum 値に直接アクセスするにはどうすればよいですか?
各国はこんな感じ。
public class Country {
private final String name;
private ICurrency currency;
public Country(String name, ICurrency currency) {
this.name = name;
this.currency = currency;
}
// How do I access the specific Enum constants here?
}
これは私のバンキングインターフェースです:
public interface IBank {
// Standard banking methods.
public void deposit(int amount);
public void withdraw(int amount);
public int balance();
public int exchange (Currency demandType, int demand, Currency offerType, int offer);
}
各国の通貨は、額面を除いて、大部分は同様のコードになります。
public interface ICurrency {
public Currency getCurrency();
// Maybe some more helper methods here.
}
これはカナダの通貨です:
public enum CANCurrency interface ICurrency {
LOONIE(1), TWONIE(2), FIVE(5); // etc....
}
米国の通貨:
public enum USACurrency interface ICurrency {
ONE(1), FIVE(5), TEN(10); // etc....
}