Java - Обработка POJO через интерфейсы или сам класс POJO?Эффективность? - PullRequest
0 голосов
/ 25 марта 2019

Я просматривал несколько проектов игр, похожих на тот, который я разрабатываю, и я видел два способа обработки методов для преобразования игрока.

Примечания: машина, дом и работаединственные три вещи, которые должны быть обработаны.(только 3 предмета в этой игре; четвертый предмет, например, семейство, никогда не будет существовать) Однако это не означает, что больше полей не будут добавлены и изменены в классе игрока.(Необходимо добавить более 100 полей)

Вот общая структура и использование Java (которое я использую в данный момент):

@Data //lombok for setters/getters
public final class Player {

    private final Car car = new Car();

    private final Job job = new Job("none");

    private final House hosue = new House();

    public void makeHouseWooden() { //the method exists here in player class
        house.setMode(wooden);
        house.incrementTimesEdited(1);
        house.refreshIfInside();
        house.configureNewEnvironment();
    }

}

Это то, что я виделна других проектах и ​​хотел бы следовать, как класс проигрывателя становится довольно большим с методами:

@Data //lombok for setters/getters
public final class Player implements ContentWorker {

    private final Car car = new Car();

    private final Job job = new Job("none");

    private final House hosue = new House();

    @Override
    public Player player() {
        return this;
    }

}

и интерфейс обрабатывает методы, относящиеся к полям в Player.java

public interface ContentWorker {

    Player player();

    public default void makeHouseWooden() {
        House house = player().getHouse();
        house.setMode(wooden);
        house.incrementTimesEdited(1);
        house.refreshIfInside();
        house.configureNewEnvironment();
    }

}

Iхочу перейти на вторую модель, потому что если я продолжу в том же духе, то класс Player станет огромным.(более 3000 строк) Таким образом, я могу сохранить класс Player только для полей (лучшая читаемость), и у меня также может быть интерфейс, который обрабатывает все методы дома, другой, который обрабатывает все автомобильные методы, и другой, который обрабатывает все методы задания.(чтобы избежать огромных нечитаемых классов, а также более динамичного взаимодействия, проще найти нужный метод)

public final class Player implements HouseWorker, CarWorker, JobWorker {

Какой из них лучше или более "эффективен" и "прост в использовании" для моего затруднительного положения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...