单例模式
目的
为了让一个类有且仅有一个实例
优点
只允许一个,节省空间
不用频繁创建删除,提高性能
缺点
不容易扩展
长期不使用会被系统当作垃圾回收,造成系统状态的丢失
实现
要点
防止外界随意的创建对象=》一个私有的构造函数
保证只有一个实例 =》在私有静态属性中进行声明(饿汉创建,懒汉声明)
提供这个实例 =》提供静态的公有方法创建和获取私有对象
代码
问题
//会不会报错?
public class test {
public static void main(String[] args) {
Sun sun1=new Sun();
}
}
class Sun{
Sun sun=new Sun();//它会一直创建Sun对象,解决:用static修饰
}
//运行结果
//Exception in thread "main" java.lang.StackOverflowError
//at com.imooc.Sun.(test.java:10).....
为什么会报StackOverflowError异常?