Stateパターン。
Scalaのtraitでフィールドも抽象宣言できるのを使ってみた。
trait State {
val name: String
val value: Int
override def toString = "Name: " + name + " Value: " + value
}object State1 extends State {
val name = "State1"
val value = 100
}object State2 extends State {
val name = "State2"
val value = 200
}class Context(state: State) {
def showState = println(state)
}object Main {
def main(args: Array[String]): Unit = {
val context1 = new Context(State1)
val context2 = new Context(State2)
context1.showState
context2.showState
}
}