Может ли данный пример служить примером реализации паттерна 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";
}
}
Странный получается фэктори метод - в текущей реализации для того, чтобы получить, например, экземпляр класса 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; }
Апдейт после обсуждения в комментах: С чисто формальной точки зрения, реализация является верной, т.к. явным образом не указывается, экземпляр какого именно класса должен вернуться из метода
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости