Могут ли фабричные методы возвращать несколько экземпляров? - PullRequest
3 голосов
/ 19 февраля 2011

Это фабричный метод , если он возвращает экземпляр класса, но является ли он фабричным методом, если он возвращает несколько (массив) экземпляров?

Ответы [ 3 ]

5 голосов
/ 19 февраля 2011

Если вам нужно вернуть несколько экземпляров, делайте это независимо от того, как он вызывается.Я бы сказал, что это действительно фабричный метод, но это не имеет большого значения.

Возможно, у вас может быть фабричный метод для возврата одного экземпляра, а затем другого, который вызывает первый экземпляр несколько раз.

3 голосов
/ 19 февраля 2011

Если T - это тип, который вы хотите создать, ваш фабричный метод для T [], так что да, это все еще фабричный метод, но не для T :-) (под T [] я имею в виду массив Tили эквивалент вашего языка)

1 голос
/ 19 февраля 2011

Да, вы даже можете стать более экзотичным:

int pipe(int fildes[2]);

Функция pipe () должна создать канал и поместить два файловых дескриптора, по одному в аргументы fildes [0] и fildes[1], которые ссылаются на описания открытых файлов для концов чтения и записи канала.

Это фабрика, которая "возвращает" (используя параметр out и фактическое возвращаемое значение для ошибкиcode) два различных объекта, соответствующих обоим концам трубы.

Не слишком зацикливайтесь на названии "фабричный метод" или даже на шаблонах проектирования.Шаблоны проектирования полезны, потому что они дают общее имя тому, что мы видим каждый день, а затем указывают на различные распространенные подводные камни или соображения - не потому, что нам нужно строго формировать наш код для какого-то имени.

...