Когда использовать фабричный метод, предоставляемый.NET Framework

Я видел несколько случаев, когда.NET Framework предоставляет заводскую версию метода, например:

против

Как мы выбираем, какой из них использовать, а какой лучше других?

3 ответа

Решение

В этом случае, как говорит Скотт Чемберлен в комментарии, DataCacheFactory предоставляется как средство создания или получения объекта DataCache по умолчанию. У этого класса нет другого пути из-за отсутствия открытых конструкторов DataCache.

Однако в некоторых случаях у вас есть выбор. принимать System.Threading.Task например. Вы можете создать с помощью конструктора или с помощью TaskFactory.

Причина, по которой оба они предоставляются в некоторых случаях, заключается в том, что фабрики могут быть просто более полезными. Фабрика может предоставить вам предварительно созданный объект с набором определенных полезных свойств. Это может избавить вас от необходимости указывать их каждый раз, когда вы хотите новый объект.

Например, с помощью класса Task вы можете сделать:

var task = new Task(yourAction);

Или вы можете создать TaskFactory следующим образом:

var taskFactory = new TaskFactory(yourCancellationToken);

И когда вы звоните:

var task = taskFactory.StartNew(yourAction);

Ваша созданная задача:

  1. связанный с желаемым токеном отмены
  2. началось с указанного действия

Используя TaskFactory, вам не нужно создавать задачу, затем заполнить все эти свойства, а затем запустить задачу самостоятельно. Фабрика делает это для вас.

Вы используете DataCacheFactory для создания объектов DataCache. Дилеммы нет - используйте их обоих.

Эти две вещи не являются взаимоисключающими - вам нужно использовать их обе. Вы видите фабричный образец.

Другие вопросы по тегам