なんじゃくにっき

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

Scala de Design Pattern: Strategy

 Strategyパターンを実装してみる。
Strategyパターンはオブジェクトの振る舞いを実行時に変更するパターン。
 
Javaの場合は、実際のアルゴリズムを記述した別クラスに委譲することで達成する。
Scalaでは関数は第一級オブジェクトなので関数をそのままインスタンスに適用できる。

class Radio(text: String) {
var func: String => String = null
def play = println(func(text))
}

object Main {
def main(args: Array[String])= {
val radio = new Radio("イカクイニキタ")
radio.func = (s: String) => s.reverse
radio.play // タキニイクカイ
radio.func = (s: String) => s * 2
radio.play // イカクイニキタイカクイニキタ
}
}

コノラヂオハギャクサイセイヤクリカエシサイセイガデキルノダ、エツヘン