Activator.CreateInstance против фабричного шаблона - PullRequest
3 голосов
/ 06 апреля 2010

В чем разница между Activator.CreateInstance и фабрикой? Могут ли они быть взаимозаменяемыми? Или все же нам нужен заводской шаблон?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2010

Activator.CreateInstance - это статический метод, который создает экземпляр указанного типа, используя конструктор по умолчанию для этого типа.

В то время как фабричный шаблон решает проблему создания объектов (продуктов) без указания точного класса объекта, который будет создан.

Вы можете «использовать» Activator.CreateInstance в фабричном шаблоне, чтобы возвращать различные типы объектов. См. Этот пример . Вы также можете создать общую фабрику , используя Activator.CreateInstance

3 голосов
/ 06 апреля 2010

Заводская модель - модель более высокого уровня. Это дает вам структуру, в которой вы можете решить некоторые проблемы, которые могут возникнуть при создании объекта. Цитировать Википедия ,

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

Некоторые процессы, требуемые в создание объекта включает определение, какой объект создать, управление временем жизни объекта, и управление специализированным наращиванием и снос объекта заботы.

Activator.CreateInstance не решает ни одну из этих проблем, он просто позволяет вам создать новый экземпляр типа. Если у вас нет проблем, подобных описанным выше (и многие случаи использования «фабричного шаблона» не в контексте таких проблем), Activator.CreateInstance будет в порядке.

...