FactoryMethod pattern (Java)

164
02 февраля 2018, 21:47

Может ли данный пример служить примером реализации паттерна FactoryMethod или он есть ошибочных по отношению именно к этому паттерну?

public class RentCar {
public static Car getRentCar(Object object) {
    Car car = null;
    if (object instanceof BmwCar) {
        car = new BmwCar();
    } else if (object instanceof PejouCar) {
        car = new PejouCar();
    }
    return car;
  }
}

Класс:

public abstract class Car {
  public abstract int getMaxSpeed();
  public abstract String getMark();
}

Импл:

public class BmwCar extends Car {
@Override
public int getMaxSpeed() {
    return 120;
}
@Override
public String getMark() {
    return "BMW";
  }
}
public class PejouCar extends Car {
@Override
public int getMaxSpeed() {
    return 80;
}
@Override
public String getMark() {
    return "Pejou";
  }
}
Answer 1

Странный получается фэктори метод - в текущей реализации для того, чтобы получить, например, экземпляр класса BmwCar, вы должны передать в метод getRentCar.... экземпляр класса BmwCar! В этом нет смысла. Так было бы лучше:

public static Car getRentCar(String carName) {
    Car car = null;
 if ("BMW".equals(carName)) {
    car = new BmwCar();
} else if ("Peugeot".equals(carName)) {
    car = new PeugeotCar();
}
return car; }

Апдейт после обсуждения в комментах: С чисто формальной точки зрения, реализация является верной, т.к. явным образом не указывается, экземпляр какого именно класса должен вернуться из метода

READ ALSO
Вывод необходимых значений полей во view

Вывод необходимых значений полей во view

Есть DAO который считывает файл и преобразует данные в объектТак же в объекте есть множество др

138
Проблема с загрузчиком моделей в Java3D

Проблема с загрузчиком моделей в Java3D

Всем приветНаписал два класса на языке Java с использованием библиотеки Java3D

142
При нажатии на TreeItem<String> изменить данные в TableView<Object>

При нажатии на TreeItem<String> изменить данные в TableView<Object>

Есть TreeView<String> и таблица TableView<Object>Хочу сделать так, чтобы по нажатию (мышкой) на один из TreeItem<String> менялись данные в таблице

133