3

我有一组有限的产品名称字符串。我还有一个发送这些产品名称之一的网络服务。但是我需要以另一种格式发送产品名称。

所以我在发送消息之前需要一个格式化程序/映射器。

我可以制作一些硬编码的映射器类,它接受一个参数并返回一个硬编码的字符串,如下所示:

String mapper(String productName) {
    switch (productName) {
    case "product1":
        return "prod1";
    case "product2":
        return "prod2"
}

但是,我不太喜欢这种方法,但我很难想出更好的解决方案。有人有更好的解决这个问题的方法吗?

我正在考虑将映射存储在数据库中,然后为此映射创建一个 DAO,它不使用开关,而是使用参数作为键,然后查询返回替代产品名称的数据库,但我不确定它是否确实是一个更好的解决方案。

有什么想法吗?

* 编辑*

忘了提这个:

原始产品名称当前存储在数据库中。我需要在不修改当前代码/表设置的情况下翻译这些名称,即我无法编辑表和当前类,但如果需要,我可以创建新表/类。

4

3 回答 3

4

如何使用properties具有类似内容的文件

product1=prod1 
product2=prod2

和你的方法..

{
   //initializer
   Properties props = new Properties();
   props.load(...);
}

String mapper(String productName) {
   props.getProperty(productName);
}
于 2013-04-29T09:28:04.163 回答
1

使用枚举(或整数集)作为产品 1、2 等的 ID。

然后使用字典/地图/数组/whatever 或 get 函数来获取名称(“product1”或“product2”)。当你想使用这些类型时不要使用字符串,因为它们往往在你的代码中出现不止一次,如果你忘记在一个位置更改它,你会得到不一致。

于 2013-04-29T09:28:02.773 回答
1

使用数据库是一种灵活的方法,让您有机会随时调整映射,而无需重新启动任何东西。但是,在这种情况下,性能可能会受到关注。如果是这样,构建完整映射表的缓存并为其设置定期刷新计划。

于 2013-04-29T09:29:05.527 回答