我是一名生物学家,正在努力提高我对 Java 和 OOP 的过时知识。我正在通过编写游戏来练习良好的软件设计和模块化(为什么要让事情变得有趣?)。
这个想法类似于风险,但与国际银行业务有关。每家银行处理不同的货币;每种货币使用不同的面额。银行都提供相同的功能(余额、取款、存款、兑换),因此可以很好地使用界面。也可以使用代表每个面额及其价值的 Enum 来很好地描述货币。
这是我非常简单的例子。我可以为游戏中的每个县创建新的 Country() 对象。
1)我是否被迫手动指定每个国家及其各自的货币?例如:
Country Canada = new Country(CANCurrency);
这似乎相当笨拙,必须有更好的方法来做到这一点。
2) 从使用 County() 的类中,我怎样才能直接访问它的(间接包含的)枚举值?
每个国家都是这样的:
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....
}