龙空技术网

在Java中如何写出完美的单例模式?

java自学成才 162

前言:

当前你们对“java中的单例”大致比较珍视,看官们都需要知道一些“java中的单例”的相关内容。那么小编同时在网摘上收集了一些关于“java中的单例””的相关文章,希望看官们能喜欢,看官们快快来学习一下吧!

视频加载中...

1.1. 单例设计模式的实现

1.1.1. 单例代码实现

需求:使用Java代码描述太阳,要求最多只能创建一个对象;

/**

* Sun

* 表示太阳的类

* @author 快学大数据

* 2018年6月15日 下午3:10:33

*/

public class Sun {

/*

* 思考:这个类,要求最多只能创建一个对象;

* 分析对象创建过程,发现,创建一个对象,需要使用new关键字和构造函数,

* 所以应该从new关键字和构造函数这两者上想办法;

* new关键字,是Java内置的一个关键字,程序员不能控制,所以只能控制构造函数,

* 不让其他地方随意使用;

* 使用private关键字修饰构造函数,这个类之外的地方就自然不能使用;

*/

private Sun() {}

/*

* 思考:单例不是没有对象,而是最多创建一个对象,就是还需要创建一个对象出来;

* 因为构造函数私有了,外界都不能使用,所以这个对象应该在这个类里面创建;

* 创建好的对象,需要使用一个成员变量保存;

* 保存这个唯一对象的成员变量,需要是静态的,而且为了安全,应该私有化。

*/

private static Sun ss = new Sun();

/*

* 因为保存 这个对象的变量被封装了,外界不能访问到,

* 所以应该提供一个公开的get方法,供外界使用;

* 又因为外界在调用这个方法获取sun对象之前,没有Sun的对象,

* 所以不能通过对象调用这个方法,所以这个方法应该用static修饰

*/

public static Sun getSun() {

return ss;

}

}

1.1.2. 单例实现步骤

要实现一个单例类,需要经过三个步骤:

1、私有化构造函数,目的是避免其它类可以创建这个类的对象;

2、在本类中创建唯一实例对象(因为构造函数私有化了,所以单例类的唯一实例对象只能在单例类里面创建;),使用一个私有静态的成员变量保存

3、对外提供一个公开的静态的函数供别人获取这个唯一实例对象

标签: #java中的单例