なんじゃくにっき

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

Scala de Design Pattern: Mediator

 Mediatorパターン行きます。
オブジェクト間のやりとりを仲立ちするMediatorを置くパターン。
 
下の例ではGroupにMemberが追加される毎に今までいたMemberがgreetする。
 

class Member(name: String) {
override def toString = name
def greet(guest: Member) = println(name + ": こんにちは " + guest)
}

object Group {
var memberList = List[Member]()
def addMember(m: Member) = {
memberList.foreach(_.greet(m))
memberList :+= m
}
}

object Main {
def main(args: Array[String]) = {
Group.addMember(new Member("太郎"))
Group.addMember(new Member("花子"))
Group.addMember(new Member("次郎"))
Group.addMember(new Member("桃子"))
}
}

// 【実行結果】
// 太郎: こんにちは 花子
// 太郎: こんにちは 次郎
// 花子: こんにちは 次郎
// 太郎: こんにちは 桃子
// 花子: こんにちは 桃子
// 次郎: こんにちは 桃子