java - Java中抽象和静态方法的解决方法
问题描述
我们的框架/规则引擎将流定义为原子序列,其中向用户提出问题,然后解释他或她的结果,通常会导致转换到后续流以进行更多问题和处理。出于重用的目的,我们有一个称为“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()”方法,可以在其中以一种面向对象强制执行的方式定义案例、日志记录和结果。然而!我确实承认这是一个矛盾的概念。
在不诉诸黑客/诡计的情况下,有没有办法在 Java 中模仿抽象静态方法的概念,或者我是否受制于我们迄今为止的想法?奖励 - 是否有某种方法可以使用 getClass() 在 this 或 super 中工作,以避免手动插入类名以进行日志记录?
解决方案
推荐阅读
- java - 从 Enum 中获取用户角色值
- c# - Azure ASP.NET Core POST 400 错误请求 Blazor Webassembly
- microsoft-graph-api - 如何使用 Graph API 和 C# 访问我自己以外的日历中的事件
- python - 在 pandas 中动态附加数据帧
- node.js - Firebase云功能http请求崩溃
- python - 在虚拟环境中安装 Django 和模块
- android - 如何创建用户界面 Kotlin
- unix - 尝试链接 CXX 可执行文件时,Kallisto 构建一直失败
- java - 如何在 Hibernate 上指定 SQL 实型?
- android - React Native & Socket.io - 无法在应用程序和服务器之间建立连接