Java中抽象AND静态方法的解决方法

时间:2018-05-21 21:44:48

标签: java design-patterns java-8 static-methods abstract

我们的框架/规则引擎将Flow定义为原子序列,其中向用户询问问题然后解释他或她的结果,最常见的是导致转换到后续流程以获得更多问题和处理。为了重用目的,我们有一个我们称之为“isNeeded”的模式,其中静态方法挂起Flow类,让其他Flow知道它是否需要通过应用程序的序列中的任何点。例如,“流程付款流程”可能具有如下所示的isNeeded方法:

  public static boolean isNeeded() {
    ReasonTracker rt;
    if (User has payment due) {
       rt = new ReasonTracker(ProcessPaymentFlow.class, true, "payment due");
    } else {
       rt = new ReasonTracker(ProcessPaymentFlow.class, false, "no payment due");
    }
    return rt.isNeeded();
  }

因此,如果您在应用程序中的任何位置并且想要查看是否应该为用户提供ProcessPaymentFlow,则可以调用isNeeded()方法,然后在适当的位置发送用户。此外,还有日志记录,因此我们可以弄清楚为什么某些用户会遇到特定流,而其他用户却没有。

现在,作为对我们框架的修改,我正在尝试标准化此方法的使用。在我的脑海中,有一个最终的静态“isNeeded()”方法,它调用一个可覆盖的抽象静态“isNeededInner()”方法,可以在OO中定义案例,日志记录和结果 - 可执行的方式。然而!我确实认识到这是一个矛盾的概念。

没有诉诸黑客/欺骗,有没有办法在Java中模仿抽象静态方法的概念,或者到目前为止,我是否受到了我们想到这一点的限制?奖金 - 有没有办法在这个或超级使用getClass()以避免手动插入类名进行日志记录?

0 个答案:

没有答案