Как я могу хранить различные типы объектов? - PullRequest
0 голосов
/ 03 октября 2018

Я создаю карточную игру на Java.Каждый карточный объект может иметь различную масть из выбора четырех, и каждая масть изменяет способ функционирования карточного объекта с другими объектами в игре .В противном случае карты ведут себя так же.Я могу назначить каждому объекту карты масть, используя булеву переменную для каждой масти, , но это похоже на грязное решение, в котором все может пойти не так.

Будет с использованием Enumбыть лучшим решением?

1 Ответ

0 голосов
/ 03 октября 2018

Лучше всего было бы создать базовый класс Abstract, который имеет абстрактный метод, от которого наследуется и реализуется каждая масть.

abstract class AbstractSuit {

  public abstract int modify();
}

Тогда каждая масть будет расширяться AbstractSuit

class Hearts extends AbstractSuit {

  @Override
  public int modify() {
    return 1 + 1;
  }
}

class Spades extends AbstractSuit {

  @Override
  public int modify() {
    return 2 + 2;
  }
}

Затем вы можете сохранить каждый ваш объект как AbstractSuits в любой коллекции, которую вы хотите, и можете вызвать modify()

List<AbstractSuit> suitList = new ArrayList<>();
suitList.add(new Hearts());
suitList.add(new Spades());

for(AbstractSuit suit : suitList) {
  System.out.println(suit.modify());
}

Вывод будет

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