java - How to model an enumeration where one constant "behaves" differently? -
i have status label shows message colored border according current status. message can vary (that there can multiple messages error) clear status different, since should never display message.
example usage
setstatus(information, "there new cookies in jar."); setstatus(error, "you slow."); setstatus(error, "stop bugging me, slow."); clearstatus(); how can model exceptional state clear? should remove enumeration? have included enumeration, since clear valid state in except not show message. yet client call:
setstatus(clear, "ups, gave message"); what other options there model list of values 1 of equal nature?
public class statuslabel { public enum status { clear, information, error; } status status = status.clear; public void setstatus(final status status, final string message) { assert status != status.clear; // set status , show message this.status = status; } public void clearstatus() { // clear message status = status.clear; } public status getstatus() { return status; } }
even though think special value none or null absoluly ok, no problem model different behavior of enum values. have consider, each of these values can have it's own class , such it's own unique behavior.
public class statuslabel { public enum status { none { public void show(string msg) { throw new illegalargumentexception("don't show clear!"); } }, information, error; public void show(string msg) { // ever needed } } status status = status.none; public void setstatus(final status status, final string message) { status.show(message); this.status = status; } public void clearstatus() { // clear message status = status.none; } public status getstatus() { return status; } } this way enum value really behave different.
Comments
Post a Comment