なんじゃくにっき

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

Scala de Design Pattern: Prototype

 Prototypeパターン。
ScalaでCloneableインターフェイスを実装するには@cloneableアノテーションを使う。
java.lang.Cloneable interfaceもしくはscala.collection.mutable.Clonaable traitをextendsする方法もある。
@cloneableアノテーションを用いた場合でもjava.lang.Cloneableが実装される。
 

@cloneable class Hoge(value: Int, name: String) {
override def clone = super.clone
override def toString = value + ": "+ name
}

object Main {
def main(args: Array[String]) = {
val hoge1 = new Hoge(1, "ほげ一")
val hoge2 = hoge1.clone

println(hoge1) // 1: ほげ一
println(hoge2) // 1: ほげ一
println(hoge1 eq hoge2) // false
}
}

 
 
 
なお、プロトタイプと聞いて
石川智晶の曲を思い浮かべた人はガノタ(特に種厨の可能性大)
・古代の戦闘機械を思い浮かべた人はFF厨
・アクションゲームを思い浮かべた人は洋ゲーヲタ
・改造人間が暴れる近未来SFを思い浮かべた人は洋画ヲタク
・上記に当てはまらずにプロトタイプっていったら関数プロトタイプのことだろ?って思った人は・・