Включайте только атрибуты, которые составляют Taxi
в вашем классе
Как отмечалось в комментариях, наличие taxiList
в вашем Taxi
классе не является хорошей идеей.Ваш Taxi
класс должен иметь только необходимые атрибуты , которые составляют Taxi .Лучшая структура будет выглядеть следующим образом:
public class Taxi {
private long startTime;
private long endTime;
private boolean isStopped = false;
// Add the necessary getters & setters for the above attributes here
}
Управляйте своими такси через List
или TaxiManager
класс
Для удержания taxiList
у вас есть 2 варианта
- В вашем
Main
классе определите List<Taxi> taxiList = new ArrayList<>()
- Создайте отдельный класс для хранения списка и логики для управления его элементами.Например,
TaxiManager
Опция 1-й - хороший способ, если у вас есть небольшое количество возможных операций на Такси .Опция 2nd лучше, если вы хотите абстрагировать логику управления такси от класса Main
.Это может выглядеть так
public class TaxiManager {
private List<Taxi> taxiList;
public class TaxiManager() { taxiList = new ArrayList<>(); }
// Here are some "management" methods you can use
// DON'T FORGET TO HANDLE EXCEPTIONS (for example ArrayOutOfBounds, ...)
public void addTaxi(Taxi newTaxi) { taxiList.add(newTaxi); }
public Taxi getTaxiAtIndex(int index) { return taxiList.get(index); }
public void stopTaxiAtIndex(int index) { taxiList.get(index).stop(); }
// Add the necessary operations here
}
Как использовать это в вашем Main
классе
Создать новый TaxiManager
и вызывать ваши методы в соответствии с выбранной логикой (* 1046)*)
public class Main {
public static void main(String[] args) {
TaxiManager taxiManager = new TaxiManager();
Scanner sc = new Scanner(System.in);
String choice = sc.nextLine();
switch (choice) {
case "add": {
taxiManager.addTaxi(new Taxi());
break;
}
// Include other options
}
}
}
Ответ на вопрос «уникальных объектов» => Использовать Singleton
Убедитесь, что у класса есть только один экземпляр, и предоставьтеглобальная точка доступа к ней
Это может быть хорошим выбором для вашего TaxiManager
, если вы хотите вызывать его из разных «классов» и при этом сохранить уникальность тот менеджер .Затем вы можете быть уверены, что ваши такси не дублируются.Если вы хотите пойти по этому пути, ваш TaxiManager
будет выглядеть примерно так
public class TaxiManager {
private List<Taxi> taxiList;
private TaxiManager() {}
private static class SingletonHolder {
private static final TaxiManager INSTANCE = new TaxiManager();
}
public static TaxiManager getInstance() {
return SingletonHolder.INSTANCE;
}
// Add other methods here
}
И чтобы вызвать его из вашего Main
класса, используйте этот
TaxiManager taxiManager = TaxiManager.getInstance();