2 回答
TA贡献1816条经验 获得超6个赞
我猜你说的是下面的事情?
abstract class BaseRule implements Comparable<BaseRule>
{
abstract int executionPrecedence();
@Override
public int compareTo(final BaseRule that)
{
return Integer.compare(this.executionPrecedence(), that.executionPrecedence());
}
}
class RuleA extends BaseRule
{
@Override
int executionPrecedence() { return 0; }
}
class RuleB extends BaseRule
{
@Override
int executionPrecedence() { return 1; }
}
这似乎相当合理。如果您担心将来必须更改现有类的值,那么只需留下很大的空白而不是使用连续的整数。
A = 10000
B = 20000
C = 30000
现在您有 9999 个空间可以在这些空间之间放置未来的实现。
也许还可以添加一个单元测试,它使用反射来检查没有两个实现共享相同的优先级。
TA贡献1810条经验 获得超5个赞
老实说,我认为您提出的实施是解决此问题的最佳方法。一定要在摘要中添加一些注释,getExecOrder()
以便未来的开发人员确切地知道他们的实现应该做什么。
添加回答
举报