Создавая объекты с помощью фабрик, вы избегаете того, чтобы код подсистемы зависел от конкретных реализаций интерфейсов, которые она использует - «программа для интерфейса, а не для реализации» - самая важная фраза в книге «Шаблоны проектирования» , и фабрики - один из важнейших способов продвижения вашего кода к этой превосходной цели (внедрение зависимостей - еще один ключевой DP для этого, который не рассматривается в классической книге, но тогда часто зависимости, которые вы вводите , являются фабриками во всяком случае, так что это упущение не так уж и ужасно ;-).
У вас есть различные преимущества с фабричным методом.
Основная идея заключается в том, чтобы управлять созданием .
Клиент вызывает объект Method
Factory.GetObject (Spec spec)
Теперь фабрика представляет собой абстракцию, которая не позволяет клиентам жестко кодировать / вставлять конструкторы классов в свой код. Вместо этого они вызывают фабрику, фабрика решает, какой подкласс объекта создать на основе спецификации.
Этот подход более расширяемый и устойчивый к изменениям - в будущем
Комментарий получился слишком длинным ... Поэтому пришлось опубликовать его как ответ.
1-Простота реализации.
Код приложения с двумя клиентами не нужно кардинально менять.
Создание 3-х классов является абстракцией от клиентского кода.
Вы также можете проверить эту ветку Заводской образец. Когда использовать заводские методы?