Я очень часто использую шаблон трейта selfless, и мне нужно использовать "дорогие" константы внутри трейта: я хотел бы иметь один экземпляр этих значений, который может потребовать нескольких шагов для вычисления, в все мое приложение.
Однако паттерн черты «самоотверженность» приводит к следующему дизайну:
- Черта MyStuff
- Объект MyStuff расширяет MyStuff
Очевидно, что размещение констант внутри объекта и использование их внутри трейта создает циклическую зависимость. Однако размещение их в трейте позволяет всем классам, расширяющим трейт, переопределять их, и поэтому они, конечно, не являются синглтоном для всего приложения.
Является ли компилятор Scala «достаточно умным», чтобы сделать final vals внутри типажа «старым общедоступным статическим окончательным java»?