UOM(计量单位)设计模式

问题描述:

寻找有关存储和转换已知数值(即米到英尺)的一般设计模式原则。一直googling没有运气,所以我必须失去一些东西。UOM(计量单位)设计模式

假设许多字段与单个表中的各种UOM什么是最佳实践?目前很多领域都是隐含的,我们正在寻求标准化。我们希望给用户*进入他们的UOM,但其他​​人可以在他们首选的UOM中查看。我应该存储'输入值'并将其转换为一些常见的基元(用户输入脚我转换为米和存储)?我是否应该将此脚输入值存储为审计备份?

我不是某些数据库表的唯一使用者,是否其他应用程序总是会执行知道值+ UOM与原始用户输入值的转换。

是否存在严重的精度转换影响,我可能会丢失。米>英尺>米应足够可靠的业务线应用程序转换(转换可以小数点后17位,但显示和输入值限制在小数点后2-4位)

任何其他想法或链接点我在正确的方向,所以我没有重新解决已知问题的解决方案?

请注意,我并没有想象一些运算符重载的宏伟解决方案,但更多的实际应用中可以工作的平均Joe Developer可以维护。

+1

Value Object设计模式涵盖您描述的情况。 – zerkms 2011-03-15 07:35:27

如果你想要一个遵循UOM的模式,JSR-275(java)就可以解决这个问题。实现JSR-275的流行库是JScience。至于存储的值,我只是创建一个永不改变的valuemeasurement type(例如米/英尺等)的列。转换可以很容易地根据要求完成。

一种选择是使用数据库中的转换表。 这会让你的用户以他们想要的任何方式输入测量结果(测量+ uom代码),并且可以在出行时随时对其进行转换。

我回答了类似的问题前一段时间被称为SQL custom unit conversion

+0

有没有任何想法在一些UOM中存储输入值,总是转换为一些公共基础并存储它。 (即数据库总是有度量标准,但用户可以输入英尺) – user610254 2011-03-15 07:48:45

+0

如果您可以将其转换为通用基础而不会损失精度,并且原始UOM并不重要,那么我只能看到转换它的好处。 – Ronnis 2011-03-15 07:54:19

看看这个Java API来计量单位:http://www.unitsofmeasurement.org/

看看书分析模式。另外,请看Quantity pattern