【发布时间】:2014-05-28 08:32:03
【问题描述】:
为了清楚我的意思,让我们建立一个可能需要这样做的假设场景。
假设我正在为一家管理苏格兰威士忌酿酒厂的公司开发一些软件。每个啤酒厂公司都可以拥有该软件的副本来管理所有业务物流。
假设我有一个Kettle 对象,在它上面我们会有一些属性,例如.Colour 和 .Material。
但是,如果 Glenfiddich 啤酒厂想要在该域上拥有另一处房产怎么办?例如.Size 和其他一些啤酒厂并不关心以上所有内容,只对.Content 和.DateFermentationStarted 感兴趣?
在 OOP 中,有没有一种方法可以使我的 Kettle 对象动态化(具有不同的属性和方法),具体取决于名为 Customer 的一些参数?
如果我没记错的话,这和 Polymorphsim 很不一样。
【问题讨论】:
-
Google 用于多租户或多租户应用程序(只有特定租户内的用户才能使用该租户内的对象)。还请看 Vaughn Vernon 的书 Implementing Domain-Driven Design
-
感谢 MaxS。谷歌返回的很多东西似乎暗示我“为每个客户创建不同的应用程序”..真的没有更好的方法吗? ://
-
多租户应用程序允许您在同一应用程序中定位多种类型的啤酒厂。似乎谷歌没有返回正确的结果;-)
-
您可能遗漏了一个概念,它是代表 Kettle 定义的抽象概念(例如,它具有哪些属性)。现在,这无数的动态属性引出了一个问题,即行为在哪里以及为什么/如何受到这些动态属性的影响。 “为客户打造”是一种处于不成熟领域或您知之甚少的领域的味道。无论如何,如果您还想在运营端扩展它(更多部署),您将需要挖掘仍然为您的客户提供价值的通用抽象。