面试积累(简单的单例模式)

如果我们在做项目时,一个对象在很多地方都要频繁的使用,如果每用一次就new一个对象,这样做无疑会大大的浪费资源,降低程序的性能,这时,我们可以将这个创建对象的这个过程提取出来,做成一个单例模式。常见的单例模式有懒汉单例模式和饿汉单例模式,以下是一个简单的demo来解释一下:

//懒汉模式
public
class SingletonL { //私有的静态对象 private static SingletonL singletonL; //构造方法进行私有化,防止在外部new对象 private SingletonL(){ System.out.println("我是懒汉"); } //得到唯一的对象,单例模式 public static synchronized SingletonL getSingletonL(){ if(singletonL==null){ singletonL=new SingletonL(); } return singletonL; } public void play(String name){ System.out.println("我是一个"+name); } }
//饿汉模式
public
class SingletonE { //声明一个唯一的饿汉 private static final SingletonE singletonE=new SingletonE(); //私有化构造方法 private SingletonE(){ System.out.println("我是饿汉"); } //返回饿汉对象 public static SingletonE getSingletonE(){ return singletonE; } //懒汉和饿汉的模式不同点在于饿汉是直接用了一个final来修饰对象,而饿汉是在get方法中new对象的,还要判断对象是否为空。 }

以下是一个测试类:

public class Test {
    public static void main(String[] args){
        SingletonL L=SingletonL.getSingletonL();
        SingletonL L1=SingletonL.getSingletonL();
        L.play("lanhan");
        L1.play("lanhan1");
        L.play("lan");
        //SingletonE E=SingletonE.getSingletonE();
        //SingletonE E1=SingletonE.getSingletonE();
    }
}

 

posted @ 2016-02-26 11:56  Leonardo’  阅读(211)  评论(0编辑  收藏  举报