我有一些具有lifespan属性的Event对象。我有不同类型的事件,每个事件都有不同的寿命和可能不同的单位(例如4-10小时,5-8周,1个月 - 2年)。我想将这些范围存储为统一且可比较的数据类型,但我不确定我的最佳选择是什么。理想情况下,我希望能够查看事件列表,找到所有可以持续3小时,1周,2个月等的事件。
答案 0 :(得分:0)
您遇到的问题是比较相同的值"实质" (即时间)但有不同的单位。这将是value object的一个很好的候选人。值对象不是JavaScript中的常见模式,但它们不再适用,并且是域逻辑的好地方。 This article非常了解如何在JavaScript中使用值对象。
创建"类"通过定义JavaScript函数。
在其中,以您使用的最小单位(小时)存储寿命值。
创建几个内部方法,根据单位类型获取和设置此值(例如,将周数乘以168以获得小时数)。在进入这些单位时,您可能希望舍入到最接近的周/月/年。
创建方法,将小时值与另一个实例的小时值进行比较。
这将允许您独立于存储其生命周期的时间单位来比较事件。