Java:在 class 本身中创建多个对象实例或如何重组
Java: creating several instances of object in class itself or how to restructure
我是 java 初学者,有一个关于如何最好地构建烹饪程序的问题。
我有一个名为 Ingredient 的 class,这个 class 目前看起来像这样:
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)");
稍后我想在不同的 class 中以 Map/HashMap 的形式检索所有这些对象。
我不确定如何最好地进行,在 Ingredient class 本身中初始化所有这些对象,或者提供一个初始化它的方法,或者创建一个 super class (AllIngredients 或类似的东西)会更好?)有一个以成分作为实例变量的地图?
很高兴提出任何建议,提前致谢:)
请不要在 Ingredient class 本身中初始化所有这些对象。这对 oops 来说是一个不好的做法。
想想你的 class 是一个模板,你可以从中创建具有不同属性值的副本(对象)。在现实世界中,如果您的 class 代表玩具飞机的模型,您将使用它来创建多个玩具飞机,但每个玩具飞机都有不同的名称和颜色,那么请考虑如何设计这样的系统。您将拥有一个模型(class)。然后是一个系统(另一个 class),用于从不同的颜色和名称选择中获取所需的颜色和名称(例如在数据库、文件、属性 文件中)等
关于你的情况。
- 如果预先确定的值将值存储在文本文件、属性文件、数据库、class 中的常量等中,具体取决于数据的敏感性。
- 使用构造函数创建成分class
- 创建一个class,它将具有使用预定值初始化成分class的方法,如果需要更新值,将值保存到文本文件-数据库等,在你的情况下return 作为地图 .
另请查看以下链接
http://www.tutorialspoint.com/design_pattern/data_access_object_pattern.htm
http://www.oracle.com/technetwork/java/dataaccessobject-138824.html
我觉得你在找 static Map
。
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;
}
static Map<String, Ingredient> allIngredients = new HashMap<String, Ingredient>();
static {
// Build my main set.
allIngredients.put("Almonds (ground)", new Ingredient("Almonds (ground)", 0.7185, "Almonds (ground)"));
}
}
我是 java 初学者,有一个关于如何最好地构建烹饪程序的问题。 我有一个名为 Ingredient 的 class,这个 class 目前看起来像这样:
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)");
稍后我想在不同的 class 中以 Map/HashMap 的形式检索所有这些对象。 我不确定如何最好地进行,在 Ingredient class 本身中初始化所有这些对象,或者提供一个初始化它的方法,或者创建一个 super class (AllIngredients 或类似的东西)会更好?)有一个以成分作为实例变量的地图?
很高兴提出任何建议,提前致谢:)
请不要在 Ingredient class 本身中初始化所有这些对象。这对 oops 来说是一个不好的做法。
想想你的 class 是一个模板,你可以从中创建具有不同属性值的副本(对象)。在现实世界中,如果您的 class 代表玩具飞机的模型,您将使用它来创建多个玩具飞机,但每个玩具飞机都有不同的名称和颜色,那么请考虑如何设计这样的系统。您将拥有一个模型(class)。然后是一个系统(另一个 class),用于从不同的颜色和名称选择中获取所需的颜色和名称(例如在数据库、文件、属性 文件中)等
关于你的情况。
- 如果预先确定的值将值存储在文本文件、属性文件、数据库、class 中的常量等中,具体取决于数据的敏感性。
- 使用构造函数创建成分class
- 创建一个class,它将具有使用预定值初始化成分class的方法,如果需要更新值,将值保存到文本文件-数据库等,在你的情况下return 作为地图 .
另请查看以下链接
http://www.tutorialspoint.com/design_pattern/data_access_object_pattern.htm
http://www.oracle.com/technetwork/java/dataaccessobject-138824.html
我觉得你在找 static Map
。
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;
}
static Map<String, Ingredient> allIngredients = new HashMap<String, Ingredient>();
static {
// Build my main set.
allIngredients.put("Almonds (ground)", new Ingredient("Almonds (ground)", 0.7185, "Almonds (ground)"));
}
}