2013-12-06 3 views
0

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

vs.

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

+3

Ну, учитывая, что 'DataCache' не имеет общих конструкторов и не имеет статических заводских методов, как вы планируете создавать его без использования фабричного класса? –

ответ

2

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

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

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

В качестве примера: с классом задач, вы можете сделать:

var task = new Task(yourAction); 

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

var taskFactory = new TaskFactory(yourCancellationToken); 

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

var task = taskFactory.StartNew(yourAction); 

твоя созданная задача:

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

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

1

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

0

Эти две вещи не являются взаимоисключающими - вы должны использовать их оба. Вы видите Factory Pattern.

Смежные вопросы