Рубрики
Uncategorized

Код реализации шаблона наблюдателя в ruby, JavaScript и PHP

Автор оригинала: David Wong.

В интервью был задан вопрос о шаблоне наблюдателя в JS, который известен уже давно. Можно сказать, что это очень полезный шаблон проектирования на динамическом языке. Мне очень стыдно, что я не изучал его систематически. Но не важно, где не заполнят, где, сразу начнем, с языка будет реализовано один раз.

Режим наблюдателя

Что касается режима наблюдателя, программный мир Мацумото делает это очень ясным: режим наблюдателя заключается в том, что при изменении состояния объекта все объекты, зависящие от состояния, автоматически уведомляются, а наблюдаемый и наблюдатель являются одним из многих отношений. В книге также приведен очень простой для понимания пример: получите текущее время системы и выведите его в командную строку. Если жесткое кодирование также очень просто, определите метод, сначала определите время, а затем обработайте презентацию. Таким образом, функция получения времени не может быть использована повторно, так как для обработки дисплея принесена бутылка для швабры.

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

PS: Мир программ Мацумото – действительно хорошая книга. Сначала я хотел прочитать эту книгу как учебник по ruby. Позже я обнаружил, что это было совсем не так. В книге я объяснил множество глубоких философских мыслей на очень легком для понимания языке. Хотя эта книга представляет небольшую практическую ценность для такого новичка, как я, это очень хороший опыт чтения с ощущением внезапного открытия после прочтения.

Реализация Ruby

Использование ruby для реализации шаблона наблюдателя просто и явно отвратительно

Да, все так просто… В основном это зависит от модуля наблюдателя. В дополнение к вышесказанному, этот модуль также имеет следующие интерфейсы:

1. Удалить наблюдателя (объект) 2. Удалить всех наблюдателей 3. Подсчет? Наблюдатели 4. Изменились? Флажок Проверить обновление

Реализация PHP

PHP прост в реализации:

Реализация JS

JS легко реализовать, но для удобства необходимо написать некоторые служебные функции, такие как удаление элементов, указанных в массиве. Следующее-это только самая простая реализация.

Вывод: Ruby позволяет нам сосредоточиться на самом программировании, а не на синтаксисе и функциях программы. JS-это полноценный язык программирования, который может реализовать все, кроме детей. Для игры требуется немного усилий. PHP, это стандартно. Мне нечего сказать.

После запуска всех трех программ они полностью поняли схему проектирования.