Java单例模式 多种实现方式

Posted CodeArt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java单例模式 多种实现方式相关的知识,希望对你有一定的参考价值。

一:通过静态私有成员实现单例模式

(1):私有化构造函数

(2):new静态实例属性对象,加锁。

单例类:

package SinglePag;
/*
 * 构造函数私有化,结合锁+静态的概念 实现单例模式
 */
public class SingleDemo {
    //防止类的实例化
    private SingleDemo(){
        
    }
    //静态 实例 属性
    private static SingleDemo singleD;
    //获取对象实例 (单例的方式 ),锁住当前类(加锁)
    
    public synchronized static SingleDemo getInstance(){
        if(singleD == null){
            singleD = new SingleDemo();
        }
        return singleD;
    }
}

实现:

package SinglePag;

public class SingleWinform {
    public static void main(String[] args) {
        SingleDemo singleDemo = SingleDemo.getInstance();
        System.out.println(singleDemo.hashCode());
        SingleDemo singleDemo2 = SingleDemo.getInstance();
        System.out.println(singleDemo2.hashCode());
    }
}


二:静态内部类实现单例模式

(1):私有化构造函数

(2):私有静态内部类,创建静态实例成员对象

(3):静态实例获取方法

单例类:

package SinglePag;

public class SingleInnerStatic {
    //静态内置类
    private static class InnerStatic{
        //静态私有 实例属性
        private static SingleInnerStatic singleInstance;
        static{
            singleInstance = new SingleInnerStatic();
        }
    }
    
    //私有化构造函数,防止实例化
    private SingleInnerStatic(){
        
    }
    
    public static SingleInnerStatic getInstance(){
        return InnerStatic.singleInstance;
    }
}

实现:

package SinglePag;

public class SingleStaticWinform {
   public static void main(String[] args) {
       SingleInnerStatic singleInnerStatic =SingleInnerStatic.getInstance();
       System.out.println(singleInnerStatic.hashCode());
       
       SingleInnerStatic singleInnerStatic2 = SingleInnerStatic.getInstance();
       System.out.println(singleInnerStatic2.hashCode());
   }
}

 


以上是关于Java单例模式 多种实现方式的主要内容,如果未能解决你的问题,请参考以下文章

实现单例设计模式的多种方式

聊聊“单例模式”的多种实现方式。

面试官说要10个单例模式的实现方式,呐,给你10个

单例模式

单例模式详解

java设计模式-单例模式