2014-11-22 117 views
0

希望能夠爲我打算構建的RoR應用程序的建模決策提供一些指導。這將是一個租賃平臺,承載多個租賃供應商。我假設以下類和/或模塊,我的問題是關於建模,組合和繼承。我想下面的類和或模塊:面向對象的建模建議

  • 產品(模塊包括在ProductLibrary,VendorCatalogue和訂單?)
  • 產品庫(每一個可能的租賃項目,產品的has_many對象,1..N的產品)
  • 供應商(1..1與供應商目錄,1..n與訂單)
  • 供應商目錄(has_many'產品庫對象'的產品和每個'供應商'的個人,1..1與供應商)
  • 客戶(1..n訂單)
  • 訂單(由供應商目錄中的產品,1..1與客戶,1..n與產品和n..1與供應商)
  • 也許應該有一個帳戶類與普通帳戶屬性和方法,這兩個供應商和客戶繼承?

對於我上面列出的方式,不要有任何不明確的地方,我是OO和編程的新故障。對於我下面的想法,我能有任何想法和建議嗎?上述目的的最佳造型:

  • 我的想法是,產品應該是一個模塊,如其他類「對我們的產品」,而不是「爲產品(?)?
  • 我不確定我甚至需要一個產品庫(它只是products.all?)?
  • 由於有多個供應商,每個供應商有不同的產品範圍/目錄,我確實需要一個VendorCatalogue對象來包含每個供應商獨特的Product對象集合。這是做這件事的最好方法嗎?
  • 應該讓供應商和客戶繼承父帳戶類以保持DRY?
  • 建立Products類/模塊,ProductsLibrary(如果rqd),然後是Vendors,VendorCatalogue,然後是Customers,然後是Orders,最合理的地方是開始嗎?

對上述任何幫助表示讚賞,謝謝。

回答

0

我的想法是,產品應該是一個模塊(?),因爲其他類 '有產品',而不是'產品'?

我寧願讓產品成爲AR :: Model。事實上,它是一個具有自己的行爲和狀態的獨立實體。如果我理解一切正確,它是您的應用程序的核心模型。

我不確定我甚至需要一個產品庫(它只是 products.all?)?

如果您將擁有一些複雜的產品搜索邏輯,那麼您應該製作類似於ProductRepository的產品。在此處查看存儲庫模式:http://msdn.microsoft.com/en-us/library/ff649690.aspx

由於有多個供應商,每個人具有不同的產品 範圍/目錄,我確實需要一個VendorCatalogue對象包含每個 廠商的產品對象的獨特的收藏。這是 做到這一點的最好方法嗎?

當然,你應該使這個對象。

應該將供應商和客戶繼承父帳戶類到 保持DRY?

這取決於你的邏輯。如果客戶和供應商都有一些賬戶,包括交易,提款等,那麼您可以將這兩個賬戶模塊包含在內。 但要小心。你應該想一下。如果他們有不同的邏輯,那麼他們每個人都應該有CustomerAccount或VendorAccount。

會是最明智的地方開始與建立產品 類/模塊,ProductsLibrary(如果RQD),然後供應商,然後 VendorCatalogue,然後客戶,那麼訂單?

我這個訂單已經夠用了。

+0

感謝斯坦尼斯拉夫,思考,研究和了解更多關於答案中的要點。例如。直到今天才聽說版本庫模式;)感謝您的指導。 – jbk 2014-11-23 14:18:00

+0

如果我幫了你,這將是偉大的,如果你標記我的答案是正確的:) – 2014-11-23 14:20:17

+0

順便說一下,AR ::模型是一個簡單的軌活動記錄模型,沒有什麼複雜 – 2014-11-23 14:21:22