一个实例对象单例

一个实例对象单例

单例模式的特点:对外只提供一个实例对象

单例模式的实现思路如下:

1、私有化施工方式(不对外开放)

2.提供静态方法获取该类的实例

3.保证一个类只有一个实例对象

单例设计模式主要有以下几种实现方式

第一种,饿鬼模式(不管发生什么,先创建),线程不安全

公共课单身人士{

private static final Singleton instance=new Singleton();//坏人模式地图场景,直接instance private Singleton(){

//去做

} public static Singleton getInstance(){ 返回实例; }}

第二种惰性模式硬件设备,(需要的时候拿)线程安全

//惰性模式

公共课单身人士{

私有静态单例单例;

私人单例(){}

public static synchronized Singleton getInstance(){//同步控制unity单例模式,避免多线程情况,多创建实例对象

if (singleton==null){ singleton=new Singleton();//需要的时候创建}

返回单例;}

}

第三种双重检查锁模式,(同步锁操作在需要创建对象的时候进行,即如果实例对象已经创建unity单例模式,那么在多线程状态下可以同时获取实例对象)

// 双重检查锁定模式

公共类 Singleton_doubleCheck {

私有静态 Singleton_doubleCheck 实例;

私有 Singleton_doubleCheck(){ }

public static Singleton_doubleCheck getInstance(){//该方法不需要同步,每个线程同时访问

如果(实例==null){

synchronized(Singleton_doubleCheck.class){//创建对象时同步锁

如果(实例==null){

instance=new Singleton_doubleCheck();

}

}

}

返回实例;

}

私有对象 readResolve() 抛出 ObjectStreamException{ 返回实例; }}

四、静态内部类静态嵌套类

公共课单身人士{

私有静态类 SingletonHolder {

private static final Singleton INSTANCE = new Singleton();

}

私有单例 (){}

public static final Singleton getInstance() {

返回 SingletonHolder。 实例;

}

}

第五枚举Enum

用枚举写单例是如此简单! 这也是它最大的优势。 下面这段代码是声明枚举实例的常用方法。

公共枚举 EasySingleton{INSTANCE; }

我们可以通过 EasySingleton.INSTANCE 来访问实例,这比调用 getInstance() 方法要简单得多。创建枚举默认是线程安全的,所以不用担心双重检查锁定,也可以防止反序列化导致重新创建新对象