なんじゃくにっき

プログラミングの話題中心。

Scala de Design Pattern: State

 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
}
}