在Java类的设计中,有时希望一个类在任何时候只能有一个实例,这时可以将该类设计为单例模式,要将一个类设计为单例模式,类的构造方法的访问修饰符应声明为private,然后在类中定义一个static方法,在该方法中创建类的对象。

如下:

public final class Me{
   	private Me(){}
    private String name;
    private static final Me INSTANCE = new Me();
    public static synchronized Me getInstance(){
        return INSTANCE;
    }
    public void changeName(String name){
        this.name = name;
    }
    public void getName(){
        System.out.println(name);
    }
    public static void main(String[] args){
        Me me1 = Me.getInstance();
        Me me2 = Me.getInstance();
        me1.changeName("czk");
        me2.changeName("cyh");
        me1.getName();
        me2.getName();
        System.out.println(me1==me2);//返回true表示引用同一实例
    }
}

输出结果

cyh

cyh

true

结果表明即使声明了两个Me的对象,但实则两个对象引用的是相同的实例。故无论通过哪个变量修改name属性,对另一个对象同样起作用。

Tips:

synchronized是Java中的关键字,是一种同步锁

一个线程访问一个对象中的synchronized同步代码块时,其他试图访问该对象的线程将被阻塞。

Q.E.D.


   七岁几胆敢预言自己,操一艘战机