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()
以便未來的開發人員確切地知道他們的實現應該做什么。
添加回答
舉報