没有反射就可以确定要运行的类

Har*_*rry 4 java database oop solid-principles

所以我处在一种情况,我希望有一个包含要运行的类的对象数据库.它看起来像:

id  | Description       | pricingClass
1   | "static pricing"  | staticDeliveryPrice.class
2   | "Dynamic pricing" | dynamicDeliveryPrice.class
Run Code Online (Sandbox Code Playgroud)

这样做的目的是允许我的编码灵活.我的想法是,这将允许多种方式来确定如何计算deliveryMethod的价格.

我担心的问题是,在这种情况下反映不好吗?有没有更好的方法呢?它是否遵循坚实的原则.(我会说是的,但我的一部分不同意).

Fab*_*och 7

您正在描述基于插件的架构.你真的需要这种灵活性吗?通常需要在以下时间:

  • 项目之外的人需要在没有干预的情况下为代码添加新功能
  • 您希望允许运行时修改程序.

否则,它完全矫枉过正.您可以完全控制产品中的内容,因此您可以简单地依靠良好的旧多态来隔离功能的不同实现.

此外,将业务逻辑放在数据库中并不是一件好事:你混淆了问题,你创建了强大的耦合(突然重命名类会变得很烦人!),当然,更难以推断代码中发生的事情只是看着它.