HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В связке с полиморфизмом постоянно возникает выражение "динамическая диспетчеризация". С самим понятием мы познакомимся позже, а сейчас поговорим про диспетчеризацию в принципе.</p>
1 <p>В связке с полиморфизмом постоянно возникает выражение "динамическая диспетчеризация". С самим понятием мы познакомимся позже, а сейчас поговорим про диспетчеризацию в принципе.</p>
2 <p>Диспетчеризация (от английского dispatch - отсылать, отправлять) - процесс координации каких-либо действий. Например, диспетчер в аэропорту разводит самолёты, диспетчер в службе такси связывает доступного водителя и клиента.</p>
2 <p>Диспетчеризация (от английского dispatch - отсылать, отправлять) - процесс координации каких-либо действий. Например, диспетчер в аэропорту разводит самолёты, диспетчер в службе такси связывает доступного водителя и клиента.</p>
3 <p>Рассмотрим условный код, в котором выбор ветки исполнения идёт по конкретному значению переменной:</p>
3 <p>Рассмотрим условный код, в котором выбор ветки исполнения идёт по конкретному значению переменной:</p>
4 <p>Во всех проектах существует понятие "среда", это то окружение, в котором происходит запуск проекта. Во время разработки код запускают в среде разработчика, её традиционно называют<em>development</em>. Среда, в которой приложение работает по-настоящему, называется<em>production</em>. В зависимости от среды, приложения по-разному стартуют, конфигурируются и даже работают, например в разных средах могут использоваться разные базы данных.</p>
4 <p>Во всех проектах существует понятие "среда", это то окружение, в котором происходит запуск проекта. Во время разработки код запускают в среде разработчика, её традиционно называют<em>development</em>. Среда, в которой приложение работает по-настоящему, называется<em>production</em>. В зависимости от среды, приложения по-разному стартуют, конфигурируются и даже работают, например в разных средах могут использоваться разные базы данных.</p>
5 <p>Код выше как раз типичный пример того, как меняется конфигурация в зависимости от среды. Процесс выбора можно назвать процессом диспетчеризации.</p>
5 <p>Код выше как раз типичный пример того, как меняется конфигурация в зависимости от среды. Процесс выбора можно назвать процессом диспетчеризации.</p>
6 <p>Статичная условная конструкция, в которой диспетчеризация идёт по строкам, легко заменяется на свитч. Так код становится понятнее и проще:</p>
6 <p>Статичная условная конструкция, в которой диспетчеризация идёт по строкам, легко заменяется на свитч. Так код становится понятнее и проще:</p>
7 <p>Хотя кода и стало чуть больше, switch сам по себе более явно описывает процесс диспетчеризации. Но можно пойти ещё дальше и сделать диспетчеризацию по ключу ассоциативного массива:</p>
7 <p>Хотя кода и стало чуть больше, switch сам по себе более явно описывает процесс диспетчеризации. Но можно пойти ещё дальше и сделать диспетчеризацию по ключу ассоциативного массива:</p>
8 <p>Значение по умолчанию легко добавить через оператор ??:</p>
8 <p>Значение по умолчанию легко добавить через оператор ??:</p>
9 <p>Этот вариант лучше предыдущих двух сразу по нескольким причинам. Во-первых, он короче, во-вторых, он гибче. Условные конструкции это статичный код, который нельзя поменять без переписывания самой программы в отличие от последнего варианта. А вот данные это совсем другое дело. Для удобства их часто кладут в файлы конфигурации, которые используют формат JSON или YAML, например:</p>
9 <p>Этот вариант лучше предыдущих двух сразу по нескольким причинам. Во-первых, он короче, во-вторых, он гибче. Условные конструкции это статичный код, который нельзя поменять без переписывания самой программы в отличие от последнего варианта. А вот данные это совсем другое дело. Для удобства их часто кладут в файлы конфигурации, которые используют формат JSON или YAML, например:</p>
10 <p>При таком подходе легко добавить новое поведение без изменения самого кода приложения. Его мощь особенно чувствуется в ситуациях, когда обработкой занимается не наш код, а код библиотеки или фреймворка. Ведь мы не можем просто взять, открыть исходники и поправить их.</p>
10 <p>При таком подходе легко добавить новое поведение без изменения самого кода приложения. Его мощь особенно чувствуется в ситуациях, когда обработкой занимается не наш код, а код библиотеки или фреймворка. Ведь мы не можем просто взять, открыть исходники и поправить их.</p>