我有一组产品名称的有限字符串。我还有一个Web服务,它发送这些产品名称之一。但是我需要以另一种格式发送产品名称。
所以在发送消息之前我需要一个格式化程序/映射器。
我可以制作一些硬编码的mapper类,它接受一个参数并返回一个硬编码的字符串,如下所示:
String mapper(String productName) {
switch (productName) {
case "product1":
return "prod1";
case "product2":
return "prod2"
}
但是,我真的不喜欢这种方法,但我很难想出更好的解决方案。任何人都有更好的解决方案来解决这个问题吗?
我正在考虑将映射存储在数据库中,然后为此映射创建一个DAO,而不是使用一个开关,它使用参数作为键,然后查询返回替代产品名称的数据库,但我不是确定它是否真的是一个更好的解决方案。
有什么想法吗?
*编辑 *
忘记提及:
原始产品名称当前存储在数据库中。我将需要翻译这些名称而不修改当前的代码/表设置,即我无法编辑表和当前类,但我可以根据需要创建新的表/类。
答案 0 :(得分:4)
如何使用包含
等内容的properties
文件
product1=prod1
product2=prod2
和你的方法..
{
//initializer
Properties props = new Properties();
props.load(...);
}
String mapper(String productName) {
props.getProperty(productName);
}
答案 1 :(得分:1)
使用枚举(或整数集)作为产品1,2等的ID。
然后使用dictionary / map / array / whatever或get函数来获取名称(“product1”或“product2”)。当您想要使用这些类型时不要使用字符串,因为它们往往会在代码中出现多次,如果您忘记在某个位置更改它,则会出现不一致。
答案 2 :(得分:1)
使用数据库是一种灵活的方法,使您有机会随时调整映射,而无需重新启动任何内容。但是,在这种情况下,性能可能会受到关注。如果是这样,请构建完整映射表的缓存并为其设置定期刷新计划。