单例设计模式

单例设计模式:保证一个类中仅有一个实例,并提供一个访问它的全局访问点。单例模式的思想在于保证工具类仅有一个实例,以节省工具类在频繁使用时不断创建对象消耗内存的场景。

一、单例设计模式的特点

1、构造方法私有化
2、声明一个本类对象
3、给外部提供一个静态方法获取对象实例

在项目中为什么要使用单例,单例有什么好处吗?
1、在设计一些工具类的时候(通常工具类,只有功能、方法, 没有属性)
2、工具类可能会被频繁调用

二、两种实现单例设计模式的方式

1、饿汉模式(占用内存的时间长,提高效率)
在类被加载后,对象被创建,到程序结束后释放

class Singleton1{
    private Singleton1(){}
    private static Singleton1 s = new Singleton1();
    public static Singleton1 getInstance(){
        return s;
    }
    public void print(){
        System.out.println("测试方法");
    }
}

// 测试
public class Test1 {
    public static void main(String[] args) {
        Singleton1 s = Singleton1.getInstance();
        s.print();
    }
}

2、懒汉模式:占用内容时间短,效率低(懒加载,延迟加载),在多线程访问时会有安全问题。
在第一次调用getInstance方法时, 对象被创建,到程序结束后释放。

class Singleton2{
    private Singleton2(){}
    private static Singleton2 s;

    public static Singleton2 getInstance(){
        if(s == null){
            s = new Singleton2();
        }
        return s;
    }

    public void print(){
        System.out.println("测试方法2");
    }
}

// 测试
public class Test1 {
    public static void main(String[] args) {
        Singleton1 s = Singleton1.getInstance();
        s.print();
        Singleton2 s1 = Singleton2.getInstance();
        s1.print();
    }
}

你可能感兴趣的:(单例设计模式)