2017-02-09 22 views
4

所以我在一个情况下,我想有一个包含类的对象的数据库运行。它看起来像这样:没有反思是否有可能确定类运行

id | Description  | pricingClass 
1 | "static pricing" | staticDeliveryPrice.class 
2 | "Dynamic pricing" | dynamicDeliveryPrice.class 

这样做的目的是为了让我的编码具有灵活性。我的思路是,这将允许多种方式来确定如何计算deliveryMethod的价格。

我担心的问题是,在这种情况下反射不好使用?有没有更好的方法来做到这一点?它是遵循坚实的原则吗(我会说是,但我的一部分不同意)。

+1

为什么不创建一个基本的DeliveryPrice类,并让DynamicDeliveryPrice和StaticDeliveryPrice类扩展它来实现它们自己的传递方法。那么你所需要的就是一个包含你调用相同方法的DeliveryPrice对象的数据结构。为什么所有将对象类型映射到字符串/类的工作? –

+1

反思不错。如果您需要它,请使用它。 – ZhongYu

+0

@RAZ_Muh_Taz我的计划是让我所有的deliveryClass使用一个接口来预定义方法。但是,我仍然需要我的价格对象来确定它使用什么deliveryPrice? – Harry

回答

7

您正在描述基于插件的体系结构。你真的需要这种灵活性吗?它通常是在必要的时候:

  • 你的项目需要新的功能添加到您的代码,而无需干预要允许运行修改程序的

否则,这是完全矫枉过正。您可以完全控制产品中的内容,因此您可以简单地依靠良好的旧式多态来隔离功能的不同实现。另外,将业务逻辑放入数据库并不是一件好事:混合关注点,创建强耦合(突然重命名类会变得令人讨厌!),当然,更难以推断出发生了什么你的代码只是看着它而已。

+0

感谢您的反馈。我很高兴你写了为什么它是必要的,因为它确实证明我正在尝试做什么。在我的用户场景中,我希望能够在运行时更改交付方式,并允许其他“客户”指定确切的成本计算以及程序如何与产品交互。 – Harry

相关问题