Так что я не уверен, что это законная фабрика или нет. Большинство завода я вижу что-то вроде этого в клиенте:Создание фабрики C#
if(//something)
factory = new Type1Factory();
else
factory = new RegularFactory();
И затем они создают объект, идя как factory.Create();
поэтому в основном состоянии, чтобы проверить на какой завод вы хотите прямо в коде вызова , Я бы предпочел скрыть это и иметь условие на самом заводе, которое, я думаю, больше не будет называться фабрикой?
Что-то вроде этого:
DateScheduleRequest request = new DateScheduleRequest();
DateScheduleBuilder dateScheduleBuilder = new DateScheduleBuilderFactory(request).Create();
И dateScheduleBuilder
объект будет в основном быть определенного типа в зависимости от запроса, отправленного на заводе конструктором.
Есть ли другой шаблон для этого или это только определенный способ сделать заводы?
В принципе, DateScheduleBuilder
будет родительским классом, который наследует кучу других типов строителей, но мой код вызова знает, что этот абстрактный класс имеет один метод, и ему не нужно знать тип запроса, просто тот факт, что он должен передать его на завод и вызвать один метод.
Это звучит прекрасно, и это совершенно законно завод по GoF –