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