所以我处于一种情况,我希望有一个包含要运行的类的对象的数据库。它看起来像:
id | Description | pricingClass
1 | "static pricing" | staticDeliveryPrice.class
2 | "Dynamic pricing" | dynamicDeliveryPrice.class
这样做的目的是让我的编码具有灵 active 。我的想法是,这将允许通过多种方式来确定如何计算 deliveryMethod 的价格。
我担心的问题是,在这种情况下使用反射不好吗?有更好的方法吗?它是否遵循坚实的原则。(我会说是,但我的一部分不同意)。
最佳答案
您描述的是基于插件的架构。您真的需要这种灵 active 吗?通常在以下情况下有必要:
- 您的项目外部的人需要在您的代码中添加新功能而无需您的干预
- 您想允许对您的程序进行运行时修改。
否则就太过分了。您可以完全控制产品中的内容,因此您可以简单地依靠良好的旧多态性来隔离功能的不同实现。
此外,将业务逻辑放在数据库中并不是一件好事:你混合了关注点,你创建了强耦合(突然重命名类会变得烦人!),当然,更难推断你的数据库中发生了什么只需看代码即可。
关于java - 没有反射是否可以确定要运行的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146066/