Посмотрев назад на определение этих двух моделей говорит нам, что
Фабричный метод используется для определения интерфейса для создания объекта, но пусть подклассы решить, какой класс инстанцировать , Фабричный метод позволяет в класс отложить создание экземпляра на подклассы.»
Abstract Factory используется для обеспечения интерфейса для создания семей родственных или зависимых объектов без указания их конкретных классов.
Так то, что вы сказали, является правильным. Фабричный метод касается создания (обычно) одного объекта, тогда как абстрактная фабрика относится к нескольким связанным объектам.
Но это НЕ все, Второе слово, которое я выделил в каждом намерении, вы увидите, что есть еще одна разница, с точки зрения механизма, который работает каждый шаблон.
Фабричный метод использует SUBCLASSES и наследование для делегирования экземпляра конкретной реализации. Это означает, что для создания новых продуктов вам необходимо наследовать класс «создатель» и переопределить заводский метод. Этот заводский метод, в свою очередь, возвращает необходимый продукт.
С другой стороны, абстрактная фабрика использует функцию ОБЪЕКТА (то есть фабрику) для делегирования. Вы должны сделать изменение кода в классе «продукт», а не в классе создателя. В частности, внутри класса продукта вы определяете несколько связанных продуктов (например, ингредиенты продукта), каждый из которых может быть создан с использованием фабричного OBJECT (составленного в классе продукта и переданного во время выполнения). Класс создателя в этом случае создает только абстрактный продукт и передает в этот продукт фабрику, которую будет использовать продукт.
Чтобы сделать вещи немного запутанными, центральная абстрактная фабрика в абстрактной фабрике обычно реализует метод Factory. Этот центральный завод часто определяет ряд заводских методов для всех ингредиентов и делегирует создание каждого ингредиента на конкретные заводы.
Надеюсь, что это поможет. Помните, что многие шаблоны проектирования действительно похожи, и на самом деле они связаны между собой, например. посмотрите на узор Decorator и шаблон адаптера. В большинстве случаев разница между двумя шаблонами проектирования заключается в их соответствующих намерениях. Хорошая книга о Design Patterns, кстати, что я действительно люблю, это Head First Design Pattern. И есть аналогичный вопрос, размещенный here.
Возможный дубликат [В чем принципиальная разница между заводскими и абстрактными заводскими шаблонами?] (Http://stackoverflow.com/questions/1001767/what-is-the-basic-difference-between-factory-and-abstract -factory-patterns) Также см. http://stackoverflow.com/questions/2280170/why-do-we-need-abstract-factory-design-pattern – nawfal