Фабричный метод недостаточно гибкий в отношении конструкторов с различными параметрами или я что -то упускаю?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Фабричный метод недостаточно гибкий в отношении конструкторов с различными параметрами или я что -то упускаю?

Сообщение Anonymous »

Пожалуйста, рассмотрите эти 2 класса: < /p>

Код: Выделить всё

public class Audi implements Car {
private String color;
private int turnAssistLevel;

public Audi() {
}

public Audi(String color) {
this.color = color;
}

public Audi(String color, int turnAssistLevel) {
this.color = color;
this.turnAssistLevel = turnAssistLevel;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public int getTurnAssistLevel() {
return turnAssistLevel;
}

public void setTurnAssistLevel(int turnAssistLevel) {
this.turnAssistLevel = turnAssistLevel;
}
}

public class Bmw implements Car {
private String color;
private boolean hasXDrive;

public Bmw() {
}

public Bmw(String color) {
this.color = color;
}

public Bmw(String color, boolean hasXDrive) {
this.color = color;
this.hasXDrive = hasXDrive;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public boolean isHasXDrive() {
return hasXDrive;
}

public void setHasXDrive(boolean hasXDrive) {
this.hasXDrive = hasXDrive;
}
}
< /code>
Я хотел бы написать несколько завод, используя заводские методы: < /p>
Допустим, я хочу иметь несколько заводских методов для возврата пустых автомобилей. Легко сделать: < /p>
public interface CarFactory {
public Car makeCar();
}
< /code>
в качестве реализации: < /p>
public class BmwCarFactory implements CarFactory {

public Car makeCar() {
return new Bmw();
}
}
< /code>
То же самое, что я мог бы сделать для Audi. < /p>
Теперь, скажем, мне нужен автомобиль с цветом. Как я вижу, мне нужно определить фабрику, которая знает, как делать автомобили с цветами: < /p>
public interface CarWithColorFactory {
Car makeCar(String color);
}
< /code>
Теперь, чтобы сделать BMW с цветом: < /p>
public class BmwWithColorCarFactory implements CarWithColorFactory {
public Car makeCar(String color) {
return new Bmw(color);
}
}
< /code>
То же самое для Audi. Или Audi с цветом и переворотом. Как бы я сделал это с помощью фабричного метода?public class SimpleCarFactory {

public Car makeBmw(String color, boolean hasXDrive) {
return new Bmw(color, hasXDrive);
}

public Car makeAudi(String color, int turnAssistLevel) {
return new Audi(color, turnAssistLevel);
}
}
Так как это сделать с помощью фабричного метода?


Подробнее здесь: https://stackoverflow.com/questions/416 ... erent-para
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»