Java设计模式之单例模式

Java 阅读: 591

什么是单例模式

有时我们只需要某个类只有一个对象,不希望有更多对象。比如数据连接对象只需要一个,
这种设计方法叫单例模式。

单例模式特点

  1. 单例类只有一个实例。
  2. 单例类必须自己创建唯一实例。
  3. 单例类必须能对外提供这个实例。

单例模式与静态类

了解了单例模式后,你一定会想到静态类。它和静态类很像,为何不干脆使用静态类?
实际上,它们是有一些区别的:

  1. 单例类可以继承和被继承,方法可以被重载,而静态方法不可以。
  2. 静态方法中产生的对象会在执行后被释放,不会一直存在于内存中。
  3. 静态类会在第一次运行时初始化,单例模式可以有其他的选择,即可以延迟加载。
  4. 基于2, 3条,由于单例对象往往存在于DAO层(例如sessionFactory),如果反复的初始化和释放,则会占用很多资源,而使用单例模式将其常驻于内存可以更加节约资源。
  5. 静态方法有更高的访问效率。
  6. 单例模式很容易被测试。

实现代码

  1. Singleton.java

    class Singleton {
        static private Singleton instance;
    
        private Singleton() {
    
        }
    
        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
  2. Test.java

    public class Test {
        public static void main(String[] args) {
            Singleton s1 = Singleton.getInstance();
            System.out.println(s1);
    
            Singleton s2 = Singleton.getInstance();
            System.out.println(s2);
    
            Singleton s3 = Singleton.getInstance();
            System.out.println(s3);
        }
    }
  3. 输出结果

    Singleton@7852e922
    Singleton@7852e922
    Singleton@7852e922

    三个对象输出的结果一样,说明实际只创建了一个对象。

版权声明:本文为博主原创文章,转载需注明来自: 洛洛の空间