美文网首页
Java - Singleton(单例)

Java - Singleton(单例)

作者: aven_kang | 来源:发表于2022-06-11 20:19 被阅读0次
    public class singleton {
    
        //2.声明本类类型的引用指向本类类型的对象
        private static singleton sin = new singleton();
    
        // 1.私有化构造方法,使用private关键字修饰
        private singleton() {
    
    
        }
    
        public static singleton getInstance() {
    
            return sin;
    
        }
        
        public static void main(String[] args) {
    
            singleton single = new singleton();
            singleton single2 = new singleton();
    
    
    
    
        }
    }
    

    如何使用这个单例

    public class test {
    
        {
            System.out.print("构造块");
        }
    
        static {
            System.out.print("静态代码块");
        }
    
        test() {
            System.out.print("构造函数");
        }
    
        public static void main(String[] args) {
            
            singleton s1 = singleton.getInstance();
            singleton s2 = singleton.getInstance();
    
            if (s1 == s2) {
                System.out.print("yes"); // 最后代码走进了这里,说明两个类是同一个对象
            }
    
        }
        
    }
    

    饿汉模式

    public class singleton {
    
        //2.声明本类类型的引用指向本类类型的对象
        private static singleton sin = new singleton();
    
        // 1.私有化构造方法,使用private关键字修饰
        private singleton() {
    
    
        }
    
        public static singleton getInstance() {
    
            return sin;
    
        }
        
        public static void main(String[] args) {
    
            singleton single = new singleton();
            singleton single2 = new singleton();
    
    
    
    
        }
    }
    

    饿汉模式:意思就是上来就创建对象

    private static singleton sin = new singleton();
    

    而懒汉模式呢,是需要的时候,再创建对象,代码如下

    public class singleton {
    
        //2.声明本类类型的引用指向本类类型的对象
        // private static singleton sin = new singleton();
        private static singleton sin = null;
    
        // 1.私有化构造方法,使用private关键字修饰
        private singleton() {
    
    
        }
    
        public static singleton getInstance() {
    
            if (sin == null) {
                sin = new singleton();
            }
            return sin;
    
        }
        
        public static void main(String[] args) {
    
            singleton single = new singleton();
            singleton single2 = new singleton();
    
        }
    }
    
    

    这个就是懒汉模式,private static singleton sin = null; sin这个对象一开始并不会初始化,而是在调用方法的时候,才会创建第一个也唯一的一个对象,
    在一般开发中,我们比较推荐使用饿汉模式,考虑到多线程访问的问题。

    相关文章

      网友评论

          本文标题:Java - Singleton(单例)

          本文链接:https://www.haomeiwen.com/subject/mvabsrtx.html