我不认为为每种语言创建一个单独的类是个好主意.毕竟,所有这些类都将具有完全相同的方法.
我将使用单个语言类,在Dish类中,我将保留Map< Locale,Description> (我将Language类重命名为一些不那么令人困惑的东西,例如Description,因为它不代表语言,它代表某种语言的描述).
现在你可以拥有一个
Description getDescription(Locale locale)
您的Dish类中的方法,它将以传递的Locale语言返回菜肴的描述.
在可能的情况下,您应该更喜欢使用标准的JDK类,例如java.util.Locale而不是自定义类.
在考虑了这些评论并同意其中一些评论后,我建议将Map删除到Description类.
class Dish
{
Description description = new Description ();
void addDescription(Locale locale, String text)
{
description.addText(locale,text);
}
String getDescription(Locale locale)
{
return description.getText(locale);
}
}
class Description
{
Map descriptions = new HashMap<>();
public void addText(Locale locale,String text)
{
descriptions.put(locale,text);
}
public void getText(Locale locale)
{
return descriptions.get(locale);
}
}
您还应该注意,在Map中搜索特定于语言的描述比在List中搜索它更有效(HashMap中的O(1)查找时间与List中的O(n)查找时间相比).