√ JavaSE - 10.怎么使用单例设计模式

  1. 单例设计模式是在类中预先实例化一个static对象,并将类的构造器设置为private,以保证该类在程序运行过程中只存在一个对象,调用该对象时通过static方法获取该对象。
  2. 单例设计模式分为饿汉式懒汉式
  3. 饿汉式是当类被加载时就实例化对象,优点是线程安全的,缺点是对象长时间占用内存。
  4. 懒汉式是当获取对象时才实例化对象,优点是对象占用内存的时间短,但需要利用同步代码块使其变成线程安全的。
public class InstanceDesignModel {
    public static void main(String[] args) {
        Test1 test11 = Test1.getInstance();
        test11.setValue(1);
        System.out.println("test11.value = " + test11.getValue());
        Test1 test12 = Test1.getInstance();
        test12.setValue(2);
        System.out.println("test11.value = " + test11.getValue());

        Test2 test21 = Test2.getInstance();
        test21.setValue(1);
        System.out.println("test21.value = " + test21.getValue());
        Test2 test22 = Test2.getInstance();
        test22.setValue(2);
        System.out.println("test21.value = " + test21.getValue());
    }
}

class Test1 {
    private static Test1 instance = new Test1();
    private int value;

    private Test1() {
        System.out.println("-----饿汉式单例-----");
    }

    public static Test1 getInstance() {
        return instance;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

class Test2 {
    private static Test2 instance = null;
    private int value;

    private Test2() {
        System.out.println("-----懒汉式单例-----");
    }

    public static Test2 getInstance() {
        if (instance == null) {
            synchronized (Test2.class) {
                if (instance == null) {
                    instance = new Test2();
                }
            }
        }
        return instance;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值