.Net developer, data scientist
Сегодня мы познакомимся не с одним шаблоном проектирования, а с тремя шаблонами, которые носят общее название «Фабрика». Как правило, когда программисты общаются на тему шаблонов или конкретного приложения, в котором шаблоны были использованы, то если они используют слово «фабрика», они имеют в виду один из 3 шаблонов, о которых будет сказано пара слов далее.
Общее назначение шаблона «Фабрика» — это создание объекта, реализующего определенный интерфейс или группы объектов, которые реализуют общий интерфейс. По факту это замена создания объекта при помощи ключевого слова new на создание объекта в «фабрике». Как вы уже догадались, «фабрика» — это класс, в рамках которого создаются новые объекты.
Вы, наверное, хотели бы спросить, а что плохого в ключевом слове new. В принципе, ничего плохого нет. Это стандартный синтаксис некоторых языков программирования уже на протяжении нескольких десятков лет и используется повсеместно. Если у вас есть какой-то специализированный класс и вы создаете его объекты в ограниченном количестве, то скорей всего всё нормально. Однако если объекты класса создаются повсеместно или очень часто в разных местах в нашем коде, то у нас могут быть проблемы, когда данный класс будет изменен. Есть шанс что в некоторых частях нашего кода измененная имплементация работать не будет или будет ошибочной. А ситуация может быть еще хуже, если вам необходимо изменить конструктор данного класса. Это означает множество изменений везде, где вы создаете данный объект при помощи ключевого слова new. Здесь нам поможет шаблон «фабрика», по сути, 3 шаблона.
Шаблон «Фабрика» — это класс, в котором реализована функциональность создания объектов. Данный класс — это единственное место, где можно получить объект класса «продукта фабрики». Следовательно, если есть необходимость изменить класс-продукт это изменение происходит в одном месте в коде. Как правило фабрики возвращают не объект класса – продукта, а объект, который реализует определенный интерфейс. Делать свой код зависимым от абстракций, то есть интерфейсов и абстрактных классов – это правило хорошего тона для программистов.
Итак, что из себя представляют 3 шаблона – фабрики:
Выводы:
Пример кода из видео на GitHub
Для открытия файла проекта необходимо Visual Studio 2019.