【发布时间】:2014-05-28 13:16:20
【问题描述】:
我喜欢采用 FSM 所需的指标,直到它达到某个状态。 我不想用指标代码向我的类发送垃圾邮件,我想添加一个特性,它覆盖某些方法并在调用该方法时发出一条消息。
例如:
trait InstrumentedActorFSM[S,D] extends Actor with FSM[S,D] {self: Actor with FSM[S,D] with Logging =>
startTimer // start measuring time here with Graphite
override def stop = {
stopTimerAndEmitMessage // emit message to graphite
super.stop
}
}
遗憾的是,FSM 中的所有方法都被声明为最终方法并且不能被覆盖。我可以求助于 Cake 模式并嵌入一个 FSM 来重新实现所有调用,但这感觉很笨拙。有什么好主意吗?
【问题讨论】: