文档章节

类和对象之单例对象(Singleton)

柳哥
 柳哥
发布于 2014/06/05 21:27
字数 532
阅读 111
收藏 0

Scala比Java更为面向对象的特点之一是scala不能定义静态成员,而是代之以定义单例对象。除了用object关键字替换了class关键字以外,单例对象的定义看上去与类定义一致。


当单例对象与某个类共享同一个名称时,它就被称为是这个类的伴生对象。类和它的伴生对象必须定义在一个源文件里。类被称为是这个单例对象的伴生类。类和它的伴生对象可以互相访问其私有成员。如例:


结果:


对于Java程序员来说,可以把单例对象当作是Java中可能会用到的静态方法工具类。也可以用类似的语法做方法调用: 单例对象类 . 方法名,如上例:
Test1.show4("class")
然而单例对象不只是静态方法工具类。它同样是头等的对象
定义单例对象并没有定义类型(在scala的抽象层次上说)。如果只有Test1对象的定义,就不能建立Test1类型的变量或者可以认为,Test1类型是由单例对象的伴生类定义的


类和单例对象间的差别
单例对象不带参数,而类可以。因为单例对象不是用new关键字实例化的,所以没机会传递给它实例化参数。每个单例对象都被实现为虚构类(synthetic class)的实例,并指向静态的变量,因此它们与Java静态类(静态内部类??)有着相同的初始化语义。特别要指出的是,单例对象在第一次被访问的时候才会被初始化
注:虚构类的名字是对象名加上一个美元符号($)。因此单例对象Test1的虚构类是:Test1$。
另外,没有伴生类的单例对象被称为独立对象。它可以用在很多地方,例如作为相关功能方法的工具类,或者定义scala应用的入口点。

© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 206
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
23种设计模式(1):单例模式

定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类型:创建类模式 类图: 类图知识点: 1.类图分为三部分,依次是类名、属性、方法 2.以<<开头和以>>结尾的为注释...

LCZ777
2014/07/05
0
0
设计模式------单利的模式

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 1.单例模式的要点:   显然单例模式的要点有三个;一是...

Im刘亚芳
2015/04/21
0
0
java高级工程师面试问题集结号(two)

单例模式的优缺点 实现要点 Singleton模式是限制而不是改进类的创建。Singleton类中的实例构造器可以设置为Protected以允许子类派生。Singleton模式一般不要支持Icloneable接口,因为这可能导...

布道牛
2016/09/09
31
0
单例模式的N种写法

鲁迅在《孔乙己》说孔乙己会写N种不同的回字, 回、囘、囬…… 。那今天我们来写几种常见的单例模式。单例模式在所有的设计模式书籍里都是作为第一个模式来讲解,因为它给人简单易于理解的感...

robin-yao
2016/12/27
130
5
Head First设计模式之单例模式

一、定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。 Singleton模式中的实例构造器可以设置为pro...

蚊子888
2017/08/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

看过上百部片子的这个人教你视频标签算法解析

本文由云+社区发表 随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经...

腾讯云加社区
13分钟前
0
0
2. 红黑树

定义:红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树(Binary Search Tree)。 要理解红黑树,先要了解什么是二叉查找树。在上一章中,我们学习了什么是二叉树,以及二叉树...

火拳-艾斯
14分钟前
0
0
input的button类型,点击页面跳转

一、input type=button 不做任何操作 例如: <input type="button" class="btn btn-primary" style="width: 30%" value="返回" onclick="window.location.href='/users/list'"></input> onc......

Sunki
21分钟前
0
0
踩坑:js 小数运算出现精度问题

背景 在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,比如下面这样👇。 在此之前我是知道 js 中著名的 0.1 + 0.2 != 0.3 的问题的,...

dkvirus
26分钟前
0
0
zookeeper和HBASE总结

zookeeper快速上手 zookeeper的基本功能和应用场景 zookeeper的整体运行机制 zookeeper的数据存储机制 数据存储形式 zookeeper中对用户的数据采用kv形式存储 只是zk有点特别: key:是以路径...

瑞查德-Jack
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部