Хотя есть место для интерпретации, в соответствии с общими определениями clone()
делает не квалифицируемым как фабричный метод, потому что клиентский код знает о логике реализации.Клиентский код знает об этой логике, потому что он вызывает метод clone()
, который имеет четко определенную семантику (для создания копии объекта).
Напротив, фабричные методы скрывают, как создается объект.Это можно сделать с помощью клонирования или другими способами.
Обратите внимание, что вы можете иметь фабричный метод, использующий шаблон Prototype.Это может привести к комбинации двух шаблонов, но не к шаблону Prototype, передающемуся как шаблон Factory.