С++ Паттерн проектированя «Фабричный метод». Пример кода.

Фабричный метод в C++ — это такой подход к написанию кода, когда наследники какого-то класса в момент создания знают какой класс создавать. Как-то так понятно, что ничего не понятно, да?

Предположим, вы имеете какой-то набор сущностей, объединённых в одну группу. Например, роли сущностей играют спортивные клубы, а объединяющей их составляющей является спорт. Так как спорт это общее понятие, которым можно объединить спортивные клубы, то можно создать класс Sport и унаследовать от него какие-то спортивные клубы, например футбольный и баскетбольный.

Под фабричным методом можно понимать, что будет использоваться такой процесс написания кода, где для создания любого спортивного клуба будет описан класс, который возьмёт на себя обязательства по созданию спортивного клуба, причём сам этот класс своими "руками" создавать спортивные клубы не станет, он свалит такую не царскую обязанность на своих подчинённых (на своих потомков). Как это всё выглядит? Пока весь код описывается в общих чертах. Это своеобразный чертёж программы.

Дальше подходим к элементам описания внутренностей нашего создающего класса или точнее внутренностей "царя" и всех его потомков.

Всё, фабричный метод применён. Вопрос только в том, как его использовать. Для начала напоминаю:

  • Если объект производного класса вызывается с помощью указателя или ссылки на него, С++ определяет какую функцию вызвать, основываясь на типе объекта

Это готовая программа. Она ничего не выведет на экран, потому что наши спортивные клубы не имеют реализаций. Но если описать какие-то методы, то с помощью обхода массива несложно будет использовать методы, принадлежащие какому-то определённому спортивному клубу. Пример на футбольных клубах (баскетбольные не дописаны).

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор китайской клавиатуры

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок