Scala 的 listener 模式

Scala 中也有虛類,至關於 C++ 的純虛類,不能本身實例化。能夠定義一個匿名的子類來實例化生成對象。匿名子類的寫法是使用父虛類後面跟着大括號,在裏面覆蓋 override 父類的方法。java

虛函數

abstract class Listener { def trigger }
object scala {
	def main(args: Array[String]) = { 
		var myListener  = new Listener{
			def trigger() {println(s"Trigger at ${new java.util.Date}")}
		}
		 myListener.trigger()
	}
}

myListener 後面跟着的就是匿名子類的定義,定義的同時實例化生成 myListener。ide

結果打印函數

Trigger at Mon Dec 26 17:12:55 CST 2016scala

觀察者模式

Listener 用來接收消息,Listening 類用來發送消息。code

abstract class Listener { def trigger }
class Listening {
	var listener: Listener = null
	def register(l: Listener) {listener = l}
	def sendNotification() { listener.trigger }
}

object scala {
	def main(args: Array[String]) = { 
		var notification = new Listening()
		notification.register(new Listener {
			def trigger { println(s"Trigger at ${new java.util.Date}") }
		})
		notification.sendNotification()
	}
}

notification 是發送消息類 Listening 的子類,調用方法 register 註冊接受消息的對象,在生成註冊對象時,也定義了匿名子類 Listener 。最後使用 sendNotification 接口往 Listener 發送消息。對象

相關文章
相關標籤/搜索