Я думаю, что есть место для абстрактной модели фабрики, а не простой шаблон завода в местах, где ваши конкретизации являются очень сложными, слишком сложны и некрасиво для одного завода и слишком сложными для пользовательского интерфейса к пониманию ..
Предположим, что это бренд TYPE_A не один класс. допустим, существует семейство из 100 видов подобных классов Type-A, и вам нужно создать экземпляр одного объекта из них. Представьте, что для того, чтобы сделать правильный объект из бренда многих подобных объектов, требуется подробная информация, и в этом объекте объекта вам нужно точно знать, какие параметры настраивать и как их настраивать.
На специальном заводе для этого бренда мы будем иметь их дифференциацию и получить точный объект для создания экземпляра, а также как его создать. мы узнаем, что согласно вводу из сети (скажем, какой цвет доступен в интернет-магазине), а также из других приложений и служб, работающих в фоновом режиме (параметры, которые пользовательский интерфейс не знает о них).
И, возможно, завтра у нас будет другое семейство, скажем, type_B и type_C для создания экземпляра. Таким образом, пользовательский интерфейс будет иметь «if else», чтобы узнать, хотят ли пользователи «type_A», «type_B» или «type_C», но классы фабрик будут решать, какой именно класс следует из типа (из семейства) для сборки, и как настроить его - какие значения задавать его параметры или отправлять его подрядчику. Все это - по многим параметрам, которые пользовательский интерфейс не знает. Все это будет слишком большим для одного класса фабрики.
Все эти примеры описывают шаблон Factory Method, потому что все они возвращают один интерфейс продукта. Ни один из них не является абстрактным заводским шаблоном, потому что ни один из них не создает семейство связанных интерфейсов продуктов. – jaco0646
В интересах полного раскрытия автор этого ответа должен был четко указать, что он также является автором каждого из связанных ответов; поэтому этот список является ** НЕ ** репрезентативной выборкой из сообщества SO. – jaco0646
@ jaco0646 IIRC, [Factory Method pattern] (https://en.wikipedia.org/wiki/Factory_method_pattern) является специализацией [Шаблон метода шаблона] (https://en.wikipedia.org/wiki/Template_method_pattern), который полагается на наследование. Возможно, я ошибаюсь, поскольку в настоящее время я путешествую, и у меня нет моей книги GoF со мной. Что вы подразумеваете под «ни один из них не создает семейство связанных интерфейсов продуктов»? –