Singleton的应用很普及,特别是在java的web项目中。比例项目的一些请求外部平台的地址、商户号或项目的图片访问路径、模板生成的路径等等。接下看看示例代码你就明白了。
/**
*
* @description Singleton(单例)
* since this isn't inherited from a cloneable
* base class and cloneability isn't added,
* making it final prevents cloneability from
* being added in any derived classes
* @author tangfq;
* @version 2020年4月3日 上午11:35:20
*
**/
final class Singleton {
/*
* 当定义一个static变量的时候JVM会将其分配到内存堆上,
* 所有程序对它的引用都会指向这一个地址而不会重新分配内存.
*/
private static Singleton s=new Singleton(47);
private int i;
private Singleton(int x){
i=x;
}
/**
* static修改一个程序块的时候(也就是直接将代码写在static{...}中)时候,JVM就会优先加载静态
* 块中代码,这主要用于系统初始化。
* @return
*/
public static Singleton getHandle(){
return s;
}
public int getValue(){
return i;
}
public void setValue(int x){
i=x;
}
public static void main(String[] args) {
Singleton s=Singleton.getHandle();
System.out.println(s.getValue());
Singleton s2=Singleton.getHandle();
s2.setValue(4);
System.out.println(s.getValue());
System.out.println("两个对象是否引用同一地址:"+(s==s2));
}
}
关于static和final更详细的说明。请参考我的blog:https://blog.csdn.net/developerFBI/article/details/105157093.