目录

java笔试-单例模式

目录

在进公司java面试时,容易考到的题目,singleton模式的特点并写一个singleton。 单例模式特点: 1,单例类只可有一个实例 2,单例类必须自己创建自己这唯一的实例 3,单例类必须给所以其他对象提供这一实例

java代码

public class Singleton{
private static Singleton singleton;
private Singleton(){
};
public static Singleton getInstance(){
if(singleton==null){
singleton = new Singletion();
return singleton;
}
}
// 测试类
class singletonTest {    
    public static void main(String[] args) {    
         Singleton s1 = Singleton.getInstance();    
         Singleton s2 = Singleton.getInstance();    
        if (s1 == s2)    
             System.out.println("s1 is the same instance with s2");    
        else   
             System.out.println("s1 is not the same instance with s2");    
     }    
}
恶汉式单例类

Java代码
package com.xyq.demo;    

public class Singleton {    
    private static final Singleton instance = new Singleton();    
    private Singleton() {    
     }    
    public static Singleton getInstance() {    
        return instance;    
     }    
}
// 测试类
class singletonTest {    
    public static void main(String[] args) {    
         Singleton s1 = Singleton.getInstance();    
         Singleton s2 = Singleton.getInstance();    
        if (s1 == s2)    
             System.out.println("s1 is the same instance with s2");    
        else   
             System.out.println("s1 is not the same instance with s2");    
     }    
}   
输出: s1 is the same instance with s2
懒汉式单例类

Java代码
package com.xyq.demo;    

public class Singleton {    
    private static Singleton instance = null;    

    /** 
      * 私有的默认构造子,保证外界无法直接实例化 
      */   
    private Singleton() {    
     }    

    /** 
      * 静态工厂方法,返还此类的惟一实例 
      */   
    synchronized public static Singleton getInstance() {    
        if (instance == null) {    
             instance = new Singleton();    
         }    
        return instance;    
     }    
}    
// 测试类
class singletonTest {    
    public static void main(String[] args) {    
         Singleton s1 = Singleton.getInstance();    
         Singleton s2 = Singleton.getInstance();    
        if (s1 == s2)    
             System.out.println("s1 is the same instance with s2");    
        else   
             System.out.println("s1 is not the same instance with s2");    
     }    
}   
输出: s1 is the same instance with s2