2011-05-24 22 views
2

根據兩個屬性類型實施簡單報價系統以確定作業成本的最佳方式是什麼?簡單作業報價系統的設計

會決定什麼範圍落入了它的作業成本。

例如:

工作類型A將花費

  • $ 80 $ 0-150
  • $ 100之間值$ 150-300
  • 爲值> $ 300
  • $ 120之間的值

工作類型B將花費

  • $ 50 $ 0-120
  • $ 100之間值$ 120-250
  • $ 120之間值$ 120-500
  • $ 150之間值值> $ 500

的頻帶範圍應該是可配置的,並且每個作業類型可以具有不同範圍的波段。

頻段範圍和成本可能會改變,最終將存儲在通過存儲庫模式訪問的SQL服務器數據庫中,以便我可以實現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 to從這些對象在內存列表中選擇返回成本模擬庫。這個類可以很容易地映射到一個SQL表,從而我可以使用LINQ to SQL在最終的DB存儲庫中查找代價。

我的問題是如何處理給定工作的最後一個樂隊類型。我開始使用float.MaxValue作爲高端樂隊,但這並不適合我。然後,我考慮使用一個較高或較低的值來指定JobCostClass中的樂隊,但再次表現不佳。我是在想這個還是太多了,還是錯過了一個真正簡單的建模方法?

回答

0

您正在嘗試做的工作是將輸入值映射到樂隊。你如何表達是次要問題。所以你應該專注於一個能夠爲給定輸入值返回正確帶的對象。

我會堅持只爲每個JobCostBand代表上限或下限帶。在給定頻段的上限值低於下一個頻段的下限值的情況下,對於上限頻段也有一個可爲空的值。有一個'經理'對象,保持樂隊的集合,並能夠查詢他們對價值的迴應,並決定哪一個是最合適的。我會將它們存儲在一個排序列表中(按低頻閾值排序),然後遍歷數組,直到頻段匹配。

+0

關於思考我想要做什麼的好處 - 容易陷入表示。不完全理解可以爲空的值,我理解需要檢查與下一個帶有關的較高值,但可空值如何幫助?我猜想可以爲空的價值將解決float.maxvalue的氣味,然後我的經理會照顧可能沒有限制的最高樂隊。 – MPD 2011-05-24 22:39:09

+0

是的。如果沒有較高的值,則可以使用'null',根據您的域,這可能會也可能不會。 – Joe 2011-05-24 22:49:13