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