Программирование → Шаблоны проектирования в автоматном программировании

Из теории алгоритмов и автоматов известно понятие конечного автомата, которое описывает поведение некоторой абстрактной модели в терминах конечного набора состояний и событий, инициализирующих переходы между этими состояниями. На основании этой теории была развита достаточно распространенная сейчас парадигма автоматного программирования, при использовании которой задача решается в терминах конечных автоматов — т.е. в терминах состояний и событий. В явном виде, данная парадигма широко применяется в языках программирования, при построении лексеров. Однако, можно найти огромное количество примеров программных систем, в некотором смысле реализованных на основе данной парадигмы.
В статье рассматриваются особенности применения шаблонов Visitor/Double Dispatch и State при реализации системы на основе конечного автомата. Кроме того, статью можно рассматривать как продолжение цикла публикаций о шаблонах проектирования на Хабрахабре.
Программирование → Паттерн Visitor. Продвинутое использование из песочницы
Здравствуйте, дорогие хабравчане!
Я хочу поделиться с вами своим опытом использования паттерна проектирования visitor и его интересной модификацией, которую я назвал upcast visitor. К сожалению, непросто придумать простой короткий пример и описать как все работает, также эта статья может показаться сложной для начинающих, тем не менее я постараюсь максимально упростить задачу. Примеры кода приведены на языке С++ и обязательны к прочтению. Без понимания кода вникнуть в суть статьи будет затруднительно.
Представьте, что мы проектируем 2D игру, в которой фрукты падают с дерева, по пути ударяясь о ветки. Цель игры — поймать все фрукты, двигая корзину под деревом.
Строим следующую диаграмму классов:
Я хочу поделиться с вами своим опытом использования паттерна проектирования visitor и его интересной модификацией, которую я назвал upcast visitor. К сожалению, непросто придумать простой короткий пример и описать как все работает, также эта статья может показаться сложной для начинающих, тем не менее я постараюсь максимально упростить задачу. Примеры кода приведены на языке С++ и обязательны к прочтению. Без понимания кода вникнуть в суть статьи будет затруднительно.
Предыстория
Представьте, что мы проектируем 2D игру, в которой фрукты падают с дерева, по пути ударяясь о ветки. Цель игры — поймать все фрукты, двигая корзину под деревом.
Строим следующую диаграмму классов:
C++ → Паттерн Visitor для обработки иерархии исключений
Исключения в C++ являются одним из самых серьезных механизмов языка. Предоставляя достаточно мощные возможности для анализа и обработки ошибок. Но работа с исключениями не всегда бывает такой уж удобной.
В этой статье я хочу поделиться решением, которое успешно применяется в проекте с которым я сейчас работаю. Думаю самые догадливые уже поняли в чем заключается моя идея. Кому еще интересно предлагаю разобраться подробнее.
В этой статье я хочу поделиться решением, которое успешно применяется в проекте с которым я сейчас работаю. Думаю самые догадливые уже поняли в чем заключается моя идея. Кому еще интересно предлагаю разобраться подробнее.
Персональные блоги → The Art Of Programming — Выпуск №34 [ Java Learning ] / Паттерн Visitor
+ Pattern Visitor
+ UML диаграмма:
http://en.wikipedia.org/wiki/File:VisitorClassDiagram.svg
+ Интересные статьи:
Visitor Design Pattern http://sourcemaking.com/design_patterns/visitor
Viruses and the Visitor Pattern http://sujitpal.blogspot.com/2008/01/viruses-and-visitor-pattern.html
Посетитель (Visitor) http://codelab.ru/p/visitor/
Отражение при проектировании образа посетителя (Visitor pattern) http://www.javable.com/javaworld/tips/98_tt/
+ Код:
http://dumpz.org/16298/
П.С. Как обычно подкаст можно скачать или подписаться на него
+ UML диаграмма:
http://en.wikipedia.org/wiki/File:VisitorClassDiagram.svg
+ Интересные статьи:
Visitor Design Pattern http://sourcemaking.com/design_patterns/visitor
Viruses and the Visitor Pattern http://sujitpal.blogspot.com/2008/01/viruses-and-visitor-pattern.html
Посетитель (Visitor) http://codelab.ru/p/visitor/
Отражение при проектировании образа посетителя (Visitor pattern) http://www.javable.com/javaworld/tips/98_tt/
+ Код:
http://dumpz.org/16298/
П.С. Как обычно подкаст можно скачать или подписаться на него
прослушан 247 раз