Zhou Study hard, improve every day.

设计模式-单例

2020-05-07
本文 1118 字,阅读全文约需 4 分钟

1.什么是单例

单例就是让整个程序在运行过程中只有一个该类的对象。在一些连接类和其他不需要多对象的程序中,可以节约内存。

一般有三个步骤

​ 1.私有化构造方法

​ 2.提供获取对象的方法

2.单例实现方式

2.1最简单方式

public class TestSingleton {
    private TestSingleton() {
    }

    private static TestSingleton instance = new TestSingleton();

    public static TestSingleton getInstance() {
    	return instance;
    }
}

2.2改进方式(有其他程序调用才加载)

public class TestSingleton3 {
    private static TestSingleton3 instance;

    private TestSingleton3() {
    }

    static TestSingleton3 getTestSingleton() {
        if (instance == null) {
            synchronized (TestSingleton3.class) {
                if (instance == null) {
                    try {
                        TimeUnit.SECONDS.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    instance = new TestSingleton3();
                }
            }
        }
        return instance;
    }
}

双重检查的目的:

1588849417890

2.3内部类的方式

public class TestSingleton4 {
    private TestSingleton4() {
    }

    static TestSingleton4 getTestSingleton() {
        return innerClass.testSingleton4;
    }

    private static class innerClass {
        final static TestSingleton4 testSingleton4 = new TestSingleton4();
    }
}

2.4枚举方式

public enum TestSingleton5 {
    INATANCE;

    public static void main(String[] args) {
        TestSingleton5 instance1 = TestSingleton5.INATANCE;
        TestSingleton5 instance2 = TestSingleton5.INATANCE;
        System.out.println(instance1 == instance2);
    }
}

Similar Posts

上一篇 VarHandle句柄

Comments