Структура соответствия шаблона?

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

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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам