Java-单例模式
在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);
}
}
输出结果
cyh
cyh
true
结果表明即使声明了两个Me的对象,但实则两个对象引用的是相同的实例。故无论通过哪个变量修改name属性,对另一个对象同样起作用。
Tips:
synchronized是Java中的关键字,是一种同步锁
一个线程访问一个对象中的synchronized同步代码块时,其他试图访问该对象的线程将被阻塞。
用final修饰的类为最终类,最终类不能被继承 用final修饰的变量为最终变量,也称为标识符常量(一旦赋值则不能改变) 用final修饰的方法为最终方法,最终方法不能被覆盖
|