повторно используемые классы условий / выражений

StackOverflow https://stackoverflow.com/questions/833754

  •  08-07-2019
  •  | 
  •  

Вопрос

Мне в некоторых случаях требовалось несколько классов для представления условий и управления ими (обычно в пользовательском интерфейсе, поэтому пользователь создает запрос, комбинируя различные типы условий, а затем код может преобразовать его, например, в зависимости от базовой системы, к которой следует запрашивать). Люцен и дБ). Я искал повсеместно повторно используемый набор классов, я уверен, что его нужно использовать во многих существующих местах (все языки выражений для начинающих), но не смог найти ничего легко пригодного для использования. Я сам закончил кодировать оба раза, но мне было жаль, что я не использовал что-то, что, я уверен, существует.

Типичные потребности:  - несколько операторов: и или и т. д.  - переменное количество операндов  - объединение условий для построения выражений  - сериализация выражений  - разбор / форматирование выражений из / в строки

кто-нибудь нашел что-то подобное?

Это было полезно?

Решение

Посмотрите Apache Commons Functor . Например. UnaryPredicate , UnaryAnd , UnaryOr и т. д. Встроенный Реализации в Serializable, но я не знаю о разборе строк. Тем не менее, я думаю, что это очень хорошее начало для того, что вы хотите. Кроме того, ознакомьтесь с этим учебным пособием IBM на основе библиотека.

Другие советы

Звучит так, будто вы ищете функторы (или объекты-функции). Если это так, этот ТАК вопрос будет уместным, WRT. выбор: функтор Commons (уже упоминавшийся) является одной из альтернатив, но есть и другие.

Все библиотеки функторов поставляются с фреймворком (который довольно прост: унарные, двоичные предикаты, функциональность отображения для них, объединение в цепочки) и базовым набором функций, наиболее часто используемых.

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

Возможно, вы захотите проверить ANTLR .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top