そんな時に便利なscalaの実装を紹介
class User(var id : Long,var name : String,var gender : Int)
class ProxyUser(private val user : User){
def name : String = if(gender == 1) "Mr. " + user.name else "Ms. " + user.name
}
object ProxyUser{
implicit def toUser(proxyUser : ProxyUser) = proxyUser.user
}
Companion objectにimplicit conversionを指定しておくだけで完了。
あとは、ProxyしたりDecorateしたりしたいメソッドを定義してやるだけでOK。
使い方はこんな感じ
val pu = new ProxyUser(new User(1,"Taro",1))
println("ID:" + pu.id)
println("name:" + pu.name)
pu.name = "Joro"
println("name:" + pu.name)
> ID:1
> name:Mr. Taro
> name:Mr. Jiro
0 件のコメント:
コメントを投稿