单例模式

77 阅读1分钟

单例模式

  1. static模式

    class Singleton{
        private static Singleton s;
        //1.构造器私有化
        private Singleton(){
            
        }
        //2.在内部创建对象,成员变量
        static{
            s=new Singleton();
        }
        //3.创建公共方法返回对象
        public static Singleton getResult(){
            return s;
        }
    }
    
    public class test{
        public static void main(String[]args){
    		Singleton s1=Singleton.getResult();
            Singleton s2=Singleton.getResult();
            System.out.println(s1==s2);//验证两者是否相同,结果是true则证明只创建了一个对象;false则证明创建了两个对象
    	}
    }
    
  2. 饥汉模式

    class Singleton{
        
        //1.构造器私有化
        private Singleton(){
            
        }
        //2.在内部创建对象,成员变量
        private static final Singleton s=new Singleton();
        //3.创建一个公共方法返回对象
        public static Singleton getResult(){
            return s;
        }
     
    }
     //4.验证
     public class test{
        public static void main(String[]args){
    		Singleton s1=Singleton.getResult();
            Singleton s2=Singleton.getResult();
            System.out.println(s1==s2);//验证两者是否相同,结果是true则证明只创建了一个对象;false则证明创建了两个对象
    	}
    }
    
  3. 懒汉模式

    class Singleton{
        
        //1.构造器私有化
        private Singleton(){
            
        }
        //2.在内部创建对象,成员变量
        private static  Singleton s;
        //3.创建一个公共方法返回对象
        public static Singleton getResult(){
            if(s==null){
                s=new Singleton();
            }
            return s;
        }
     
    }
     //4.验证
     public class test{
        public static void main(String[]args){
    		Singleton s1=Singleton.getResult();
            Singleton s2=Singleton.getResult();
            System.out.println(s1==s2);//验证两者是否相同,结果是true则证明只创建了一个对象;false则证明创建了两个对象
    	}
    }