instanceof java list_java – 设计模式在使用List时如何避免instanceOf

我不认为为每种语言创建一个单独的类是个好主意.毕竟,所有这些类都将具有完全相同的方法.

我将使用单个语言类,在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)查找时间相比).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值