Фабричный метод возвращает объекты одного типа, это даже показано в приведенной вами статье.
То есть, по хорошему, всё что должен знать клиентский код при вызове фабричного метода - объект с каким интерфейсом/экзмепляр какого абстрактного класса должен вернуться.
Кстати, совет, новички этим частенько грешат - не пытайтесь впихнуть паттерны в код, просто за то что они есть, и не пытайтесь изучить их чтобы улучшить качество своего кода. Это скорее названия наиболее часто повторяющихся мест в разных программах.
Если интересны паттерны, и вы хотите извлечь из этого пользу - старайтесь найти побольше примеров использования изучаемых на текущий момент, и разобраться почему были выбраны именно они. Вот там будет простор на подумать