这个其实几段代码就可以代码,不知道 python 有没有 java 中的继承。
~~~
public enum IntervalType implements ValueObject<IntervalType> {
/**
* 默认,最原始支持的模式
*/
DEFAULT("默认", 2, new Default()),
/**
* 等值
*/
EQ("=a", 1, new Equal()),
/**
* 不等于
*/
NOT_EQ("!=a", 1, new NotEqual()),
/**
* 大于
*/
GT(">a", 1, new GraterThan()),
/**
* 小于
*/
LT("<a", 1, new LessThan()),
/**
* 大于等于
*/
GT_EQ(">=a", 1, new GraterThanAndEqual()),
/**
* 小于等于
*/
LT_EQ("<=a", 1, new LessThanAndEqual()),
/**
* 范围
*/
BETWEEN("∈[a,b]", 2, new Between()),
/**
* 左开范围
*/
LEFT_BETWEEN("∈(a,b]", 2, new LeftOpenBetween()),
/**
* 右开范围
*/
RIGHT_BETWEEN("∈[a,b)", 2, new RightOpenBetween()),
/**
* 双开范围
*/
OPEN_BETWEEN("∈(a,b)", 2, new OpenBetween());
private String value;
private Interval interval;
private int valueNumber;
/**
* 此方法在页面调用
*
* @
return number
*/
@
SuppressWarnings("unused")
public int getValueNumber() {
return valueNumber;
}
public String getValue() {
return value;
}
/**
* 获取转换后的区间
*
* @
param alertType 报警类型
* @
param values 相关阈值
* @
return 区间
*/
public String getInterval(int alertType, String... values) {
return this.interval.convert(alertType, values);
}
/**
* 与{@link #getInterval 相反的一个方法}
*
* @
param interval 区间
* @
return 报警相关的阈值
*/
public String[] resolveInterval(String interval) {
if (this.interval instanceof Default) {
return PattenUtils.reverseResolve(interval);
}
return PattenUtils.regexNumber(interval);
}
IntervalType(String value, int valueNumber, Interval interval) {
this.value = value;
this.valueNumber = valueNumber;
this.interval = interval;
}
@
Override public boolean sameValueAs(final IntervalType other) {
return this.equals(other);
}
public class GraterThan implements Interval {
@
Override public String convert(int alertType, String... number) {
return "(" + number[0] + ",∞)";
}
}
~~~