Сразу приходят в голову следующие системы статусов:
С помощью массива и переменной:
String[] statuses;
String currentStatus;
С помощью листа и переменной:
List<String> statuses;
String currentStatus;
С помощью enum:
enum Status {
FIRST_STATUS,SECOND_STATUS //... etc
}
Status status;
С помощью класса с статичными полями и приватным(и) конструктором(ами)(по-сути тот же enum):
class Status{
public final static Static FIRST_STATUS;
public final static Static SECOND_STATUS;
//... etc
static{
FIRST_STATUS = new Status();
SECOND_STATUS = new Status();
//... etc
}
private Status(){}
}
С помощью интерфейса, показывать не буду - говорят, что хранение констант в интерфейсе - антипаттерн. Легко заменяется классом.
Допустим, нам нужно реализовать классы с следующими сигнатурами:
class MoveableObject{
public boolean doesStay();
public boolean doesMove();
}
class PersonObject{
public boolean doesStay(); // тот же статус, что и у MoveableObject!
public boolean doesMove(); // тот же статус, что и у MoveableObject!
public boolean doesTalk();
}
Видим, что набор статусов MoveableObject входит в набор статусов PersonObject. Хочу отнаследовать PersonObject от MoveableObject, так как код MoveableObject полностью входит в код PersonObject. Из рассмотренных выше для этой задачи подходит только вариант с List.
Есть ли другие способы, я что-то упускаю?
Продвижение своими сайтами как стратегия роста и независимости