2011-06-03 18 views
1

我們接受來自潛在客戶的線索。我們只允許某些提供商在特定日期/時間內向我們發佈線索。目前,我們有3個時間表,但我們可能在未來增加1或n個:尊重不同時間表的模式/代碼

  1. 星期日@ 8AM - 星期五@ 3PM - 所有時間之間。
  2. 週一至週五早上8點至下午5點。
  3. 每天24小時,每天。

此外,我們希望能夠一次性關閉某些小時 - 所以,我們會告訴一些主要提供商,「我通常會在上午8點到下午5點之間通知MF,但星期一是一個假期,所以不要發佈。「

問題是,有些領導提供者沒有設置處理日程安排(或者如果他們想向我們出售更多潛在客戶,就忽略它)。所以,我現在必須在我們的系統中添加這個支票,並且首先檢查是否允許這個主要提供者(他們用他們發送的XML標識他們自己)在這個特定時間發佈線索。

我真的不知道從哪裏開始。有沒有人做過這個?你是怎麼處理的,你的方法有什麼好處/壞處?

回答

1

這看起來有點複雜的基於規則的邏輯,所以我認爲最好的方法是創建一組代表所涉及實體的對象。爲了澄清,我的意思是將規則建模爲對象,應用適用的最合適的設計模式。例如,現在我只想着,如果你說一個客戶有一組「規則」何時發佈,我會通過在客戶對象上有一個方法來進行建模,例如CanPost(DateTime postTime )。該方法會根據規則集合檢查postTime,可以根據需要複雜化。起初,它可能僅僅是這些第一批「後規則」的兩個集合,以及後來在規則中提到的「例外」。但是這可以真正建模爲無窮大。檢查Martin Fowlers分析模式可以很好地參考許多複雜的領域模型,尤其是如果您可以通過Fowler獲得Accounting Patterns e-book,請檢查PostingRule部分

+0

另請參閱規格模式,嘗試使用實施複雜的規則 – 2011-06-03 21:14:17