Java单例模式

0.定义

单例模式(Singleton Pattern), 其定义如下:
Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类
只有一个实例, 而且自行实例化并向整个系统提供这个实例。 )

 

 

 

1.单例模式类Singleton

package com.xkzhangsan.singleton;

public class Singleton {
    private static final Singleton singleton = new Singleton();

    // 限制产生多个对象
    private Singleton() {
    }
    
    // 通过该方法获得实例对象
    public static Singleton getSingleton() {
        return singleton;
    }
    
    // 类中其他方法,尽量是static
    public static void doSomething() {
        System.out.println("Singleton.doSomething...");
    }
}

2.测试类

package com.xkzhangsan.singleton;

public class Client {
    
    public static void main(String[] args) {
        
        for (int i = 0; i < 3; i++) {
            Singleton singleton = Singleton.getSingleton();
            singleton.doSomething();
        }
    }

}

 3.使用注意

(1)优点

a.由于单例模式在内存中只有一个实例, 减少了内存开支 ,减少了系统的性能开销 

b.单例模式可以在系统设置全局的访问点, 优化和共享资源访问 

(2)缺点

a.单例模式一般没有接口, 扩展很困难, 若要扩展, 除了修改代码基本上没有第二种途径可以实现

(3)使用场景:在一个系统中, 要求一个类有且仅有一个对象, 如果出现多个对象就会出现不良反
, 可以采用单例模式 ,如下:

a.要求生成唯一序列号的环境
b.在整个项目中需要一个共享访问点或共享数据
c.创建一个对象需要消耗的资源过多
d.需要定义大量的静态常量和静态方法(如工具类) 的环境, 可以采用单例模式


参考:设计模式之禅

GitHub地址:https://github.com/xkzhangsan/java-designpattern-practice

posted @ 2019-05-02 10:43  xkzhangsanx  阅读(129)  评论(0编辑  收藏  举报