2014-11-22 85 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