<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Для закрепления материала из уроков к ним идёт множество упражнений.

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

Также вместе с курсов Вы получаете Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Шаблон проектирования "Фабрика"(Pattern Factory).

Шаблон проектирования "Фабрика"(Pattern Factory).

Всем привет. Сегодня мы разберём третий важный шаблон проектирования "Фабрика" или Pattern Factory.

Его суть заключается в том, чтобы создавать объекты "на лету". Т.е. создавать их по ходу программы, если это нужно.

<?php
  abstract class Renderer {
   private $_document;
   abstract function render();
   function setDocument($document) {
    $this->_document = $document;
   }
  }
  class HTMLRenderer extends Renderer {
   function render() {
    //Выводим HTML
   }
  }
  class XMLRenderer extends Renderer {
   function render() {
    //Выводим XML
   }
  }
  //Создаём соответствующий тип класса Renderer
  function RendererFactory() {
   $accept = strtolower($_SERVER["HTTP_ACCEPT"]);
   if(strpos($accept, "text/xml")>0) {
    return new XMLRenderer();
   }else{
    return new HTMLRenderer();
   }
  }
  $renderer = RendererFactory();
  $renderer->setDocument("Some content...");
  $renderer->render();
?>

У нас есть какой-то абстрактный класс, от которого наследуются другие классы: HTMLRenderer и XMLRenderer, а также есть функция RendererFactory, которая проверяет заголовок HTTP_ACCEPT и возвращает(!) нужный объект. Этот шаблон очень похож на стратегию, но разница в том, что в этом шаблоне мы возвращаем нужный нам объект. Наш класс вернёт нам объект в зависимости от того, какой заголовок. Если HTML, то HTMLRenderer, а если XML, то XMLRenderer. Можно так же создать, например, класс PDFRenderer, объект которого будет создан "на лету", если заголовок будет соответствующий.

Что ж, вы уже знаете 3 самых часто используемых шаблонов проектирования: singleton, factory и strategy и можете их использовать в своих проектах, а если вы не совсем понимаете, что же это и зачем нужно, то советую приобрести курс PHP и MySQL с Нуля до Гуру, где подробно рассмотрена тема объектно-ориентированного программирования, и создаётся движок с помощью данного подхода.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (2):

sync.o sync.o 01.05.2014 09:07:16

Эмм... RendererFactory() - это функция, а вы пишете, что это должен быть класс.

Ответить

php_programmer php_programmer 01.05.2014 13:11:13

Спасибо! Исправлено

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.