2010-08-03 47 views
3

抱歉的天真的問題;我仍然在理解DDD。假設我有一個IOrderService。這是我會有一個方法GetNewOrderID?或者,我想更一般地說,在DDD方案中分配新訂單的正確方法是什麼?分配的訂單ID在哪裏?

回答

0

除非我誤解DDD那麼它是不是一個幼稚的問題 - 而不是當它是不清楚的地方的責任則沒有足夠的領域已經考察了/明白。事情是這樣:

  • 什麼是訂單ID, 什麼樣的信息進入一個 訂單ID的格式。
  • 是否有 要求在得到 一個新的OrderID點保存任何 - 喜歡誰要求 它,等
  • 是否有請求要求 ,但未被使用的訂單ID 被釋放?

一個或一個以上的這些要求可能澄清有關情況。

+0

謝謝!假設訂單ID是按順序分配的,當需要訂購ID時可能需要保存,並且沒有要求釋放請求但未使用的訂單ID。 – JonathanS 2010-08-03 16:31:39

+0

在這種情況下,根據您提供的信息,我會說是的,它可能是由接口定義的方法,並在從接口繼承的類中實現。再次,正如我所看到的,DDD是一種看待要開發什麼的方法。然後使用好的設計和TDD來確保以穩定的方式實現可測試的。在這種情況下,如果你想要一個序列號,那麼它應該集中處理(一種服務),以便它可以處理多個用戶。然後,OrderID是否實際上是數據庫中的標識列,取決於系統設計。 – 2010-08-03 16:41:53

0

我喜歡聽商業用語。例如,如果他們談論目錄訂單和電話訂單都是訂單來源,那麼我可能會有一個OrderSource或IOrderSource而不是OrderService--最後一個是代碼說話而不是業務說話。我可能有兩個實現,或者只是一個使用標識符來表示「這是來自手機」的實現,具體取決於進程的不同。

如果商人們談論從他們的服務得到的ID,那麼,做到這一點。儘管他們更傾向於從OrderSource接收訂單,將其分派到Warehouse或創建OrderForm並接收ReferenceNumber。該ReferenceNumber可能是主鍵,但它可能不是Id。

業務用能指導你寫一個自己的過程以及相匹配的軟件語言。讓事情變得容易改變,並幫助你發現是否有一個可以使用一些學習的領域的方面。設計模式與您以前的設計模式完全相同;如果業務有一些更好的條款,我就不會在這些後面打電話給我的代碼。看到DDD的無所不在的語言,祝你好運!