Паттерны

В промышленной разработке больших программных продуктов встречаются повторяющиеся проблемы. Какими бы разными ни были проектируемые системы, в них могут быть одинаковые задачи масштабирования, организации кода, данных или межмодульного взаимодействия.

Для некоторых общих проблем существуют хорошие, зарекомендовавшие себя решения, так называемые паттерны проектирования. Вы могли о них слышать: Abstract Factory, Singleton, Decorator, Template method и другие.

Знание паттернов проектирования помогает в проектировании и поддержке ПО, но использоваться они должны не для повышения “крутости” кода проекта и команды, а для решения действительно существующих или возможных проблем.

Первый паттерн в нашем фреймворке, с которым вам нужно освоиться, - MVC.

MVC

Паттерн Model-View-Controller (сокращенно MVC) предлагает разделять любое ПО на три уровня:

  1. Model (Модель) отвечает за работу с долгосрочно хранимыми данными. Модель не знает, где, когда и зачем эти данные нужны.
  2. View (Представление) отвечает за вывод данных для пользователя. Представление не знает, откуда данные взялись для вывода. Его ответственность - только корректное их представление в браузере, на экране смартфона и т.п.
  3. Controller (Контроллер) отвечает за взаимодействие подсистем и работу с действиями пользователя. Контроллер — та система, которая “встречает” запрос пользователя, передает данные в Модель или запрашивает их для Представления.

В некоторых определениях MVC явно подразумевается 4-ый уровень под названием Router (Роутер). Этот уровень нужен для выбора подходящего Контроллера.

MVC в «1С-Битрикс: Управление сайтом»

картинка

Моделью в «1С-Битрикс: Управление сайтом» можно назвать всю API-часть, состоящую из модулей (не путайте модуль в системе и Модель MVC!). Например, в модуле Информационные блоки iblock есть набор классов: CIBlockElement, CIBlockSection, CIBlock — это и есть модель. Эти классы не знают, откуда приходят данные, но знают, как соотнести данные и таблицы в БД.

За уровень Представления отвечают несколько концепций, в которых разрешено выводить HTML:

  1. Шаблоны компонентов
  2. Шаблоны сайта
  3. Контентная часть страниц

За уровень Контроллера отвечают файлы component.php и class.php в компонентах и result_modifier.php шаблонов компонентов, а также невизуальная часть страниц.

Роутером в платформе являются:

  1. Файловая система, потому что по умолчанию адрес вида /about/ будет обработан страницей /about/index.php
  2. Механизм ЧПУ (комплексные компоненты), т.к. они могут изменить логику, предписанную файловой системой.

Полезные ссылки и материалы