Являются ли все эти подписи метода действительными для простого заводского шаблона?JAVA

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

Сообщение Anonymous »

Я изучаю простой заводской шаблон, и я хотел бы знать, действительны ли все методы на моей фабрике для такой шаблона: < /p>
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;
}
}

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 SimpleCarFactory {

// 1. make empty cars
public Car makeCar(CarType carType) {
switch (carType) {
case AUDI:
return new Audi();
case BMW:
return new Bmw();
default:
throw new RuntimeException("No such car type!");
}
}

// 2. make cars with colors
public Car makeCarWithColor(CarType carType, String color) {
switch (carType) {
case AUDI:
return new Audi(color);
case BMW:
return new Bmw(color);
default:
throw new RuntimeException("No such car type!");
}
}

// 3. BMW has an option that differentiate it from any other car. We cannot use a general car factory anymore
public Car makeBmw(String color, boolean hasXDrive) {
return new Bmw(color, hasXDrive);
}

// 4. Audi has a turnAssistLevel option
public Car makeAudi(String color, int turnAssistLevel) {
return new Audi(color, turnAssistLevel);
}

// 5. The same as #1, only it is static now make empty cars
public static Car staticMakeCar(CarType carType) {
switch (carType) {
case AUDI:
return new Audi();
case BMW:
return new Bmw();
default:
throw new RuntimeException("No such car type!");
}
}
}
< /code>
Я добавил в кодовые комментарии варианты методов. Я задаю этот вопрос, потому что обычно вы создаете подкласс на основе какого -то дискриминатора (картип). Но вы также можете иметь параметры конструктора.
Кроме того, я не уверен, что делать, когда ваши связанные объекты имеют разные конструкторы.>

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

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

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

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

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

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

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