根据两个属性 type 和 value ,实施简单报价系统以确定工作成本的最佳方法是什么。
作业成本将确定值落入类型的范围。
例如:
作业类型A将花费
作业类型B将花费
频段范围应该是可配置的,每个作业类型可以有不同的频段范围。
频段范围和成本可能会发生变化,最终会存储在通过存储库模式访问的SQL Server数据库中,因此我可以为TDD实现模拟存储库。
我最初的开发使我在下面有一个代表乐队的轻量级课程
public class JobCostBand
{
public int ID { get; set; }
public string Type { get; set; }
public float ValueLowerBand { get; set; }
public float ValueUpperBand { get; set; }
public float Cost { get; set; }
}
我有一个模拟存储库,使用LINQ从这些对象的内存列表中选择以返回成本。这个类可以很容易地映射到SQL表,从而可以使用LINQ to SQL在我的最终数据库存储库中查找成本。
我的问题是如何处理给定作业类型的最后一个乐队。我开始使用 float.MaxValue 作为上部乐队,但这并不适合我。然后,我考虑使用大写或小写值来指定JobCostClass中的波段,但这又不是很好。我是在考虑这个问题还是错过了一种简单的建模方法?
答案 0 :(得分:0)
您要尝试的工作是将输入值映射到波段。您如何表示它是次要问题。因此,您应该专注于能够为给定输入值返回正确波段的对象。
我坚持只为每个JobCostBand
代表一个上限或下限。如果给定频带的上限值低于下一频带的下限值,则上频带也可以为可空值。有一个'manager'对象可以保存band的集合,并且能够根据值查询它们并确定哪个是最合适的。我会将它们存储在一个排序列表中(按较低的波段阈值排序),然后按顺序遍历数组直到波段匹配。