Ролевая основа программирования / Композитно-ориентированная среда программирования в Scala
Откуда я могу получить Composite Oriented Programming Framework в Scala - Qi4j или аналогичный?
Для справки: http://www.qi4j.org/
Что такое Qi4j™? - [Краткое введение взято с www.qi4j.org]
Короткий ответ: Qi4j ™ - это основа для разработки приложений, ориентированных на предметную область, включая развитые концепции AOP, DI и DDD.
Qi4j ™ - это реализация Composite Oriented Programming, использующая стандартную платформу Java 5, без использования каких-либо препроцессоров или новых языковых элементов. Все, что вы знаете из Java 5, по-прежнему применимо, и вы можете использовать как свой опыт, так и наборы инструментов, чтобы повысить производительность с помощью Composite Oriented Programming уже сегодня.
Кроме того, Qi4j™ позволяет составлять ориентированное программирование на платформе Java, включая Java и Scala в качестве основных языков, а также множество языков, работающих на JVM в качестве языков с мостовыми соединениями.
2 ответа
Посмотрите на этот ответ, чтобы понять, почему вы не можете изменить черты во время выполнения.
Чтобы динамически изменить (или выбрать) поведение: возможно, вы посмотрите на классы типов или неявные преобразования.
С уважением, Ян
В Qi4j 2.0 (в работе) добавлена мощная поддержка Scala, и мы работаем над тем, чтобы сделать черты Scala полезными в качестве миксинов и задач Qi4j (AOP-эквиваленты "по рекомендации"). Черта Scala компилируется в статические методы, которые принимают в качестве первого аргумента прокси-экземпляр класса-владельца (классическое представление C++ в C). Qi4j сможет подключать Trait как Mixin (то есть методы могут быть представлены в открытом интерфейсе Composite) и связываться в лежащем в основе StateHolder для составного элемента, который будет использоваться Trait, поэтому кажется, что у признаков будет состояние...
FTR; Qi4j 2.0 также минимизирует использование типов, позволяя использовать типы, не зависящие от Qi4j, даже больше, чем раньше.