Да, вы даже можете стать более экзотичным:
int pipe(int fildes[2]);
Функция pipe () должна создать канал и поместить два файловых дескриптора, по одному в аргументы fildes [0] и fildes[1], которые ссылаются на описания открытых файлов для концов чтения и записи канала.
Это фабрика, которая "возвращает" (используя параметр out и фактическое возвращаемое значение для ошибкиcode) два различных объекта, соответствующих обоим концам трубы.
Не слишком зацикливайтесь на названии "фабричный метод" или даже на шаблонах проектирования.Шаблоны проектирования полезны, потому что они дают общее имя тому, что мы видим каждый день, а затем указывают на различные распространенные подводные камни или соображения - не потому, что нам нужно строго формировать наш код для какого-то имени.