Там нет ничего плохого с заводом, который имеет метод создания, который принимает один или несколько параметров
Car blueCar = carFactory.create(CarColor.BLUE);
Car redCar = carFactory.create(CarColor.RED);
или завод, который имеет несколько методов создания:
Car blueCar = carFactory.createBlueCar();
Car redCar = carFactory.createRedCar();
Альтернатива Фабрика, которую также можно было бы рассмотреть в зависимости от варианта использования, - это шаблон Builder. Строитель только один метод создания без параметров, но он также имеет методы, которые устанавливают свойства объектов, которые будут созданы им:
carBuilder.setColor(CarColor.BLUE);
Car blueCar = carBuilder.create();
carBuilder.setColor(CarColor.RED);
Car redCar = carBuilder.create();
Как метод создания фактически создает объект внутренне деталь реализации влево к себе. Это может быть, например:
- Вызвать конструктор с параметрами
- Invoke конструктор по умолчанию, а затем вызвать некоторые сеттеров на возвращенном объекте, чтобы изменить его атрибуты
- Instantiate другого подкласса в зависимости от параметров
- или их комбинация
можно использовать как заводской, так и строительный шаблон – nawara
@nawara Sure. Когда вы захотите, вы можете объединить все три шаблона выше в одном объекте Creator, который устанавливает некоторые атрибуты через сеттеры, имеет несколько методов создания и делает некоторые из методов создания требующими дополнительных параметров. Но если полученный код легко читать, а поддерживать - это другой вопрос. – Philipp
Я попытаюсь применить эту идею спасибо – nawara