Проблема расширения списка статуса. В чем хранить статус?

184
25 марта 2022, 04:20

Сразу приходят в голову следующие системы статусов:

С помощью массива и переменной:

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.

Есть ли другие способы, я что-то упускаю?

READ ALSO
Статические методы Java

Статические методы Java

Возник такой вопрос, почему методы в основной программе являются статическими?

214
Таймер в android

Таймер в android

Я далеко не спец в программированииДелаю приложение для своих детей

180
Почему обработчик события не работает через include?

Почему обработчик события не работает через include?

Нужна in-app клавиатура,чтобы спокойно мог из разных активити подключатьКод следующий:

120