Сразу приходят в голову следующие системы статусов:
С помощью массива и переменной:
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
.
Есть ли другие способы, я что-то упускаю?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возник такой вопрос, почему методы в основной программе являются статическими?
Нужна in-app клавиатура,чтобы спокойно мог из разных активити подключатьКод следующий: