Java学习笔记之---单例模型

Java学习笔记之---单例模型

单例模型分为:饿汉式,懒汉式

(一)要点

1.某个类只能有一个实例

2.必须自行创建实例

3.必须自行向整个系统提供这个实例

(二)实现

1.只提供私有的构造方法

2.含有一个该类的静态私有对象

3.提供一个静态的公有方法用于创建,获取静态私有对象

(三)饿汉式

在对象创建过程中实例化

public class EHan {
    //私有构造函数
    private EHan(){
    }
    //创建该类型的私有静态实例
    private static EHan ehan=new EHan();
    //创建该类型的公有静态方法,返回静态实例对象
    public static EHan getehan(){
        return ehan;
    }
}
class EHanTest{
    public static void main(String[] args){
        EHan one=EHan.getehan();
        EHan two=EHan.getehan();
        System.out.println(one==two);
    }
}

运行结果:true

(四)懒汉式

静态公有方法中实例化

public class EHan {

    //私有构造函数

    private EHan(){

    }

    //创建该类型的私有静态实例

    private static EHan ehan=null;

    //创建该类型的公有静态方法,返回静态实例对象

    public static EHan getehan(){

        if(ehan==null){

            ehan=new EHan();

        }

        return ehan;

    }

}

class EHanTest{

    public static void main(String[] args){

        EHan one=EHan.getehan();

        EHan two=EHan.getehan();

        System.out.println(one==two);

    }

}

运行结果:true

(五)懒汉式PK饿汉式

1.饿汉式比懒汉式块

2.饿汉式线程安全,懒汉式存在线程风险

(六)单例模型的优点

1.在内存中只有一个对象,节省内存空间

2.避免频繁的创造和销毁对象,提高性能

3.避免对共享资源的多重占用

(七)单例模型的缺点

1.扩展比较困难

2.如果实例化后的对象长期不利于,系统将默认为垃圾进行回收,造成对象状态丢失

原文地址:https://www.cnblogs.com/dyddzhp/p/11175940.html