Я просматривал несколько проектов игр, похожих на тот, который я разрабатываю, и я видел два способа обработки методов для преобразования игрока.
Примечания: машина, дом и работаединственные три вещи, которые должны быть обработаны.(только 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 {
Какой из них лучше или более "эффективен" и "прост в использовании" для моего затруднительного положения?