1.单例模式的定义:
所谓的单例模式就是想办法让整个软件系统中的某个类只存在一个实例对象,并且外部想要得到这种类只有一种方法。
2.思路:
2.1 要想让某个类某个类只存在一个实例对象,即不存在多个对象,需要私有化构造器
2.2 这时虽然不能在该类的外部创建该类的对象了,但可以在该类的内部创建该对象,这时需要对对象的引用私有化private static Singleton singleton = new Singleton();。
如果不私有化即:static Singleton singleton = new Singleton();,则外部可以这样操作:Singleton.singleton=null;,这样使用null对象是可能出现空指针现象。

2.3 对象的引用私有化之后,外部想要调用该对象就需要一个static修饰的get方法:
public static Singleton getSingleton() {
return singleton;
}
2.4 那么使用get方法后,是否外部可以这样Singleton.getSingleton()=null;,再可能出现空指针现象呢?我在eclipes中尝试了一下,
是不会的,编译报如下错误:The left-hand side of an assignment must be a variable
3.代码如下:
/**
* 单例模式-饿汉式为什么要这么写?
* @author 小强
*
*/
public class SingletonTest {
public static void main(String[] args) {
// Singleton.singleton=null;
// The field Singleton.singleton is not visible
// Singleton.getSingleton()=null;
// The left-hand side of an assignment must be a variable
}
}
class Singleton{
private Singleton() {
}
private static Singleton singleton = new Singleton();
public static Singleton getSingleton() {
return singleton;
}
}
本文详细介绍了Java单例模式中的饿汉式实现方式,探讨了为何要私有化构造器和对象引用,以确保类只有一个实例且无法被外部篡改。通过代码示例解释了静态初始化和获取实例的方法,防止出现空指针异常。
1273

被折叠的 条评论
为什么被折叠?



