У меня есть существующий базовый код, который использует статический Factory Method дизайн для инстанцирования определенных типов объектов:Расширение статического шаблона метода завода
public static Something createSomething(int x, int y, .....)
{
// creates a Something object
}
Я хотел бы продлить этот метод позволяет ему инициализировать объект Something по-другому, основываясь на новых параметрах (параметрах), которые будут определять способ создания объекта.
Простейший (и наименее масштабируемый) способ заключается в добавлении новых параметров к заводскому методу.
Это не похоже на правильный путь для ведения дел:
- Там больше, чем один фабричный метод, который должен быть обновлен, а не только один.
- Создание нового метода приведет к изменению кода клиента, вызывающего фабрику. Этот вид побеждает цель создания единого места, которое генерирует объекты.
- Добавление большего количества параметров приводит к длинным спискам параметров, которые непросто использовать.
Есть ли лучший подход к расширению заводского метода?
Используйте шаблон Builder. –
заботиться о том, чтобы разработать (хотя бы кратко), как это соответствует требованиям и позволяет расширить текущий дизайн? –
Это не расширило бы его. Вам нужно будет изменить текущий проект, чтобы использовать объект Builder вместо Factory. Самый простой способ - просто добавить новый метод с дополнительным параметром. –