文档章节

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

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

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


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


结果:


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


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

© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 205
博文 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
设计模式学习笔记十:单例模式(Singleton Pattern)

1.概述 单例模式(Singleton Pattern)又称单件模式,单例模式保证一个类仅有一个实例,并提供一个访问的他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例...

长平狐
2013/06/17
70
0
单例模式是设计模式中最简单的形式之一

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例...

飞你不可
2017/03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
2分钟前
0
0
python实战一期:第一天

1. 为什么学习python 1.1 为什么要学Python? Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自...

laoba
5分钟前
0
0
Java并发编程学习三:线程同步的关键字以及理解

上篇文章中介绍了Java线程的带来的问题与内存模型中介绍了线程可能会引发的问题以及对应Java的内存模型,顺带介绍了Volatile和Sychronized关键字。今天对Java中涉及到的常见的关键类和关键字...

JerryLin123
11分钟前
0
0
我用代码来给你们分析一个赚钱的技巧

赚钱是个俗气的话题,但又是人人都绕不开的事情。我今天来“科学”地触碰下这个话题。 谈赚钱,就会谈到理财、投资,谈到炒股。有这样一个笑话: 问:如何成为百万富翁? 答:带一千万进入股...

crossin
11分钟前
0
0
spring MatchingBean应用

1、编写接口FactoryList import java.util.List;public interface FactoryList<E extends MatchingBean<K>, K> extends List<E> { E getBean(K factor); List<E> getBeanLi......

重城重楼
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部