展开全部
单例模式:
在框架中通过反62616964757a686964616fe58685e5aeb931333361323564射机制在程序运行时由框架生成一个类的实例,该实例是由框架负责维护;当然我们自己也可以实例化这个类,此时我们自己实例化的对象和框架维护的实例是互不影响的;
类的实例对象是由引用指向堆中保存的,单例是由框架中的引用指向堆中的一个实例,而我们自己创建的对象是另一个指向堆中的实例两个互不干扰;但是在使用起来,我们在不同地方改变单例全局的单例都变了,看起来好像静态一样但是实际上我们使用的只不过都是框架维护的一个实例而已;
举例:@Component
public class Person{
private String name;
Private Integer age;
//get set 方法...省略不想写;
}
在框架启动时,我们就获得了一个Person类的实例,这个实例由框架内部一个引用指向,在程序使用时我们只需把地址赋于需要的地方,也就是说实际上大家用的都是一个对象;
就在这时,我们自己开心的new 了一个Person对象;此时我们通过set方法改变该对象不影响其他指向单例对象的变量;
静态类:
首先java中的静态类指的大多数是内部类;作为一个成员变量它静态才有意义,此时无论程序中的任何部分调用了该静态类的外部类,并通过方法改变了内部类的数据;此时该程序中的所有该内部类的实例都改变了,互相影响;因为静态变量是存储在方法区内的,而且就一份,无论谁使用该静态变量都是去方法区查询该对象的状态,所以互相干扰;