Java设计模式之单例模式

Java luoluolzb 浏览1805次

什么是单例模式

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

单例模式特点

  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
    

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

本文标签: Java 设计模式

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://luoluolzb.cn/articles/52/singleton-pattern-of-java-design-pattern
您需要登录后才发布评论。 点此登录
用户评论 (0条)

暂无评论,赶紧发表一下你的看法吧。