日期:2014-05-20  浏览次数:20797 次

单例模式?
Java code

public class A {
    private Static A a = new A();
    private A() {
    }
    public static A getInstance() {
        return a;
    }
}


这个是单例模式吗?还是应该这样
Java code

public class A {
    private Static A a = null;
    private A() {
    }
    public static A getInstance() {
        if(null == a) {
            a = new A();
        }
        return a;
    }
}


都一样吧?

------解决方案--------------------
单例模式 是 不允许外界创建对象,将对象私有化,
提供一个方法 返回对象

针对于 多线程的情况下,还有另外一种写法
------解决方案--------------------
都是单例模式,
但是,
后一种,不适用于多线程情况,多线程下,会产生多个对象的情况。

------解决方案--------------------
上面的两个都是单例模式
第一个是开始就赋值 为懒汉模式
第二个为要的时候才赋值 叫饿汉模式

这两个当然都涉及到线程安全的问题~!
------解决方案--------------------
都是单例模式.

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

1.饿汉式单例类
2.懒汉式单例类

使用的情况有点区别。
一个直接创建,一个是要用的时候再创建。饿汉式线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。