文档章节

Scala 的 listener 模式

兔之
 兔之
发布于 2016/12/26 17:25
字数 260
阅读 18
收藏 0

Scala 中也有虚类,相当于 C++ 的纯虚类,不能自己实例化。可以定义一个匿名的子类来实例化生成对象。匿名子类的写法是使用父虚类后面跟着大括号,在里面覆盖 override 父类的方法。

虚函数

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。

结果打印

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

观察者模式

Listener 用来接收消息,Listening 类用来发送消息。

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 发送消息。

© 著作权归作者所有

上一篇: C++11 的 thread_local
下一篇: Scala 的泛型类
兔之
粉丝 69
博文 250
码字总数 96477
作品 7
深圳
程序员
私信 提问
Java、Scala和Go语言多线程并发对比测试结果和结论

前面的内容请看:Java、Scala和Go语言多线程并发对比测试。 相关的代码下载:http://qinhui99.itpub.net/resource/2570/31876 测试结果和结论 统计1~N个自然数里面有多少个质数,并记录所花...

qinhui99
2012/05/25
13.6K
10
Scala 学习笔记 模式匹配

1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的...

Tony沈哲
2017/05/16
0
0
使用Akka Http,ActiveMQ搭建一个邮件发送服务器

代码地址:https://github.com/yangbajing/scala-applications/tree/master/email-server 应用功能是实现一个基于队列的邮件发送服务,每个邮件发送者(使用smtp协议)作为一个。多个可以在同...

羊八井
2015/08/13
2.7K
4
Scala 技术周刊 | 第 27 期

这里有最新的 Scala 社区动态、技术博文。 微信搜索 「scalacool」关注我们,及时获取最新资讯。 深度阅读 Replacing IntelliJ with Emacs for Scala Development 用 Emacs 进行 Scala 开发 ...

ScalaCool
2017/11/27
0
0
Scala入门之工具篇

我初次接触Scala时,由于对Scala相关的工具不够熟悉,学习的效率低下。所以本文主要介绍Scala编程所必备的工具。一般而言,我们接触一门编程语言,都需要接触这门语言的编译器、REPL、构建工...

碎镜
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
今天
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部