Структура соответствия шаблона? - PullRequest
2 голосов
/ 24 декабря 2009

Я скоро займусь проектом Java (GWT) ( связанный вопрос ). Может быть, я пытаюсь растянуть вещи здесь, но мне было интересно, есть ли какая-либо «структура сопоставления с образцом» (не знаю, есть ли для этого термин), написанная на Java? (может быть, это мое длительное знакомство с Эрлангом постоянно искажает мои мысли о моделях: -)

Я буду использовать архитектуру «передачи сообщений» для связи между моими компонентами Java, и я хотел бы эффективно «сопоставлять» сообщения с действиями.

Может быть, я должен просто придерживаться локализованных автоматов или есть что-нибудь еще?

Обновлено : «сообщение» будет объектом экземпляра, содержащим «только данные». В настоящее время я не планирую использовать наследование для передачи семантики упомянутым сообщениям, но довольно простые свойства.

Обновление2 : после записи коллективной мудрости SO ( см. Здесь ), кажется, что Scala также выходит за рамки.

(ПРИМЕЧАНИЕ: новичок Java здесь ... пожалуйста, будьте осторожны)

Ответы [ 2 ]

2 голосов
/ 24 декабря 2009

То, что вы можете искать, это Javaspaces (реализация кортежей пространства Java) и соответствующие объекты на основе их атрибутов (называемых «записями» в мире Javaspace).

В пробелах хранятся объекты с определенными атрибутами или записями (например, связанная валюта, город, пользователь и т. Д.). Затем вы можете выбрать объекты из пространства, указав 0 или более таких записей, и, таким образом, получить 0 или более объектов. Таким образом, это полезный шаблон для сценариев обмена сообщениями и, в частности, для производителей и потребителей.

Таким образом, вы можете хранить свои объекты (сообщения) с определенными атрибутами (например, тип сообщения, тип потребителя и т. Д.), И ваши потребители будут выбирать эти объекты на основе набора из 0 или более атрибутов. Обратите внимание, что не не требует модификации базового объекта, который вы храните. Вы можете запустить пространство в процессе (в одной JVM) - это не просто шаблон сетевого хранилища.

0 голосов
/ 24 декабря 2009

Я думаю, что вы хотите, чтобы сопоставление с образцом было регулярными выражениями , и по вашему описанию у вас будет управляемая событиями программа , где сообщения - это события. *

Не делай этого. Вместо этого используйте фактический объект в качестве сообщений. Таким образом, вам не нужно ничего анализировать ( это медленно ), а просто сопоставлять типы и проверять соответствующие директивы ( это быстро ) для реальных действий. Сделать из этого конечный автомат - тоже неплохой выбор.

...