【发布时间】:2015-04-30 07:31:51
【问题描述】:
我是一名 Java 初学者,有一个关于如何最好地构建烹饪程序的问题。 我有一个名为 Ingredient 的类,这个类目前看起来像这样:
public class Ingredient {
private String identifier;
private double ingredientFactor;
private String titleInterface;
public Ingredient(String identifier, double ingredientFactor,String titleInterface) {
this.identifier = identifier;
this.ingredientFactor = ingredientFactor;
this.titleInterface = titleInterface;
}
我想用某些值作为实例变量初始化几个对象(大约 40 个)并将它们保存在 Map 中,例如
Map<String, Ingredient> allIngredients = new HashMap<String, Ingredient>();
allIngredients.put("Almonds (ground)", new Ingredient("Almonds (ground)", 0.7185, "Almonds (ground)");
稍后我想在不同的类中以 Map/HashMap 的形式检索所有这些对象。 我不确定如何最好地进行,在成分类本身中初始化所有这些对象,或者提供一个初始化它的方法,或者创建一个具有成分映射的超类(AllIngredients 或类似的东西?)会更好作为实例变量?
很高兴有任何建议,在此先感谢 :)
【问题讨论】:
-
你不应该初始化类中的属性,而应该有多个构造函数/甚至方法来初始化它们。其次,有一个使用所有属性构造地图并返回地图的方法。这些方法可以稍后在其他类中重用。
-
如果成分的数量是固定的,那么你也可以使用枚举。
-
绝对是一个单独的类。理想情况下是文本文件中的实际数据,而不是 Java 源代码中的数据。
-
恕我直言,地图
是多余的,因为它的成分信息存储在成分中。你可能有一个类,比如说 Receipt,它有一个字段 List 存储所有成分。您可以通过迭代器获取名称。 -
由于
AllIngredients看起来像容器,它不能是Ingredients的超(或子)类。例如,它可以是Map的纯包装器,带有用于放置和检索内容的实用方法。
标签: java class object structure