Абстрактный Фабрика и Фабричный шаблон в DbProviderFactory ADO.Net? - PullRequest
0 голосов
/ 23 марта 2012

DbProviderFactory inheritance

Это наследование найдено в ADO.Net. Можно ли сказать, что здесь используются оба шаблона проектирования: метод абстрактной фабрики и фабрика?

Абстрактная фабрика: «Предоставить интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов».

Таким образом, здесь DbProviderFactory - это интерфейс для создания семейств связанных объектов, то есть DbConnection, DbCommand, которые все связаны с каким-либо провайдером базы данных, таким как Sql или провайдер Oracle.

Фабричный метод: «Определите интерфейс для создания объекта, но пусть подклассы решают, какой класс создать для экземпляра. Фабричный метод позволяет классу отложить создание экземпляров для подклассов.»

Таким образом, здесь строка (DbConnection CreateConnection ()) является фабричным методом, поскольку она определяет интерфейс для создания объектов, но пусть подклассы, такие как SqlProviderFactory и OracleProviderFactory, решают, какой экземпляр создавать. Поставщик Sql создаст SqlConnection, а поставщик Oracle создаст OracleConnection, и эти типы наследуются от DbConnection.

Можно ли сказать, что каждый метод в классе DbProviderFactory является фабричным методом, а шаблон в целом является абстрактной фабрикой?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Да, DbProviderFactory является хорошим примером шаблона Abstract Factory.И каждый метод CreateXXX этой фабрики является FactoryMethod.

0 голосов
/ 23 марта 2012

Да, единственная разница между Фабрикой и Абстрактной Фабрикой - это абстракция, то есть сохранение названия Фабрика.Таким образом, Абстрактная Фабрика по сути является набором из 1 или более Фабрик во всех случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...