sma*_*sma 7 java enums business-logic
在Enums中放置任何类型的业务逻辑是否被视为良好做法?不是真正强烈的逻辑,而是更像是方便实用的方法.例如:
public enum OrderStatus {
OPEN, OPEN_WITH_RESTRICTIONS, OPEN_TEMPORARY, CLOSED;
public static boolean isOpenStatus(OrderStatus sts) {
return sts == OPEN || sts == OPEN_WITH_RESTRICTIONS || sts == OPEN_TEMPORARY;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
是的,我认为这是一个好主意.但是,我认为可以使用实例方法更清晰地实现它:
public enum OrderStatus {
OPEN, OPEN_WITH_RESTRICTIONS, OPEN_TEMPORARY,
CLOSED {
@Override isOpen() { return false; }
};
public boolean isOpen()
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我经常将Enums用于单例实例.因此,它们几乎只包含业务逻辑.作为有意义扩展的类,Enum
它们甚至可以实现接口.
我只考虑使用枚举,如果它适合枚举值,即商务逻辑与实例紧密耦合.