JAVA 23种设计设计模式---单例模式

单例模式有两种  第一种:饿汉式单例模式   第二种:懒汉式单例模式

概念:在它的核心构建中包含一个被称为单例的特殊类

我们在使用单例模式时只要抓住以下三个特点就可以了!!

特点:

1.单例类只能有一个实例。构造方法限定为private从而避免类在外部被实例化。

2.单例类必须自己创建自己的唯一实例。

3.单列类必须给所有其他对象提供这一实例。

代码结构:

饿汉式:

package com.zxf.single;
/**
 * 单例模式就是把当前类变成一个实例  
 * 单例模式有两种 1.饿汉式单例  2.懒汉式单例
 * @author Administrator
 * 下面是饿汉式单例模式发  在类加载的时候初始化
 */
public class Singleton {
    //私有构造
    private  Singleton(){
        
    }
    //在类加载的时候创建   写法1  
    private static Singleton single = new Singleton();
    /*写法二  使用静态块  静态块里边的内容在类加载的时候直接创建
    private static Singleton single = null;
    static{
        single = new Singleton();
    }*/
    //提供共有方法供外部使用
    public static Singleton getInstance(){
        return single;
    }
}

懒汉式:

package com.zxf.single;
/**
 * 懒汉式单例模式
 * 在类加载的时候不初始化,只有当使用的时候才初始化
 * @author Administrator
 * 注:在多线程的环境下线程不安全   解决方法为 使用同步锁(这里只提示,不做演示)
 */
public class Singleton2 {
    //私有构造
    private Singleton2(){
        
    }
    private static Singleton2 single= null;
    //提供共有方法供外部访问
    public static Singleton2 getInstance(){
        if(single==null){
            single = new Singleton2();
        }
        return single;
    }
}

测试类:

package com.zxf.single;

public class Test {
    public static void main(String[] args) {
        //饿汉式单例
        System.out.println(Singleton.getInstance());
        //懒汉式单例
        System.out.println(Singleton2.getInstance());
    }
}

运行结果:

至此,单例模式结束!

猜你喜欢

转载自blog.csdn.net/Websphere_zxf/article/details/83143092