如何动态加载策略(策略模式)?

时间:2011-02-19 07:14:40

标签: java sql dynamic strategy-pattern

我的应用程序将为我的对象提供不同的策略。实现它的最佳方法是什么?理想情况下,我想从一些关系数据库动态加载策略实现。不过,我不知道该怎么做。什么是最好的方法?

例如,假设我们要将策略Strategy123应用于对象MyObj:我们只是使用其ID 123从数据库加载对象,对其进行反序列化,获取策略class,并与MyObj一起使用。

这种方法在维护方面可能会遇到一些问题:虽然乍一看听起来比较容易,但从长远来看,这可能会很痛苦,例如,如果策略的界面发生变化,就会感到痛苦。

我还有其他解决方案吗?我想要一个允许我将策略类保留在代码库之外的解决方案,这样如果我的策略发生变化,或者我添加了新策略,我就不需要修改代码并重新部署应用程序。

1 个答案:

答案 0 :(得分:1)

您可以使用Drools等规则引擎或某些脚本语言(如Groovy)实施策略,并将其存储在数据库中。然后,您可以在运行时从数据库加载这些规则并将其应用于您的对象。