Ну,
У меня есть проблема (хорошо, никакой реальной проблемы, но я хочу попробовать что-то новое) с созданием объектов.На самом деле у меня есть несколько заказов, которые содержат список элементов заказа.
Эти элементы заказа используются и распространяются во всем приложении, и мне нужен способ их создания.Основная проблема в том, что я хочу иметь возможность создавать эти объекты разными способами.
На самом деле я делаю это в конструкторе классов и проверяю, задан ли аргумент.(Я использую php, поэтому нет никакой поддержки перегрузки от языка, как вы наверняка знаете:))
Простой и быстрый пример
class foo {
protected $_data=null;
public function __contruct($bar){
if (is_array($bar)){
$this->_data=$bar;
}
else {
$dataFromDb=getDataFromDatabase
$this->_data=$dataFromDb;
}
}
}
В любом случае, если я хочу создатьмой объект, предоставив другой тип параметра, скажем, xml-документ, инкапсулированный в строку, мне нужно поместить все эти вещи в мой конструктор.Если процесс создания объекта более сложный, мне в конечном итоге нужно создать отдельный метод для каждого типа, который я хочу инициировать.Но этот метод вызывается только при создании этого специального типа.(Я думаю, у вас есть проблема:))
Еще одна проблема приходит на ум: если мне нужно больше параметров в конструкторе для создания конкретного объекта, я должен изменить весь мой код, потому что изменился конструктор.(Хорошо, я могу дать ему все больше и больше параметров и работать со значениями по умолчанию, но это не то, что я действительно хочу).
Поэтому мой вопрос: какой шаблон подходит для этой задачи, чтобы решить мое создание конкретногообъект.Я думал о создании фабрики для каждого способа, которым я хочу создать конкретный объект.Но я не уверен, является ли это общим решением для решения такой проблемы.