Исходя из вашего примера, создается впечатление, что вы будете строить экземпляры Job
и EventHandler
статически.В этом случае вам вообще не нужны эти классы!
Начиная с Job
.Он выполняет две роли:
- поддерживает список
T => Unit
функций - выполняет эти функции
(также стоит отметить, что ::
предваряется, поэтому шаги будут выполняться в порядке, обратном тому, в котором они были добавлены)
Создание и ведение этого списка функций во время выполнения (в изменяемом списке) можно полностью избежать, если вы ужезнать, что они будут, когда вещь компилируется.Это наиболее естественно сделать с помощью агрегатной функции:
val job = (m: MessageEvent) => {
log.debug(m)
println(m)
somethingElse(m)
}
Вместо удержания List[Job[Event]]
это означает, что EventHandler
теперь содержит List[(T => Unit)]
(как ранее Job
).Так что промыть и повторить ...