上一个节点 主要介绍了 设计模式 中其中一种 单例模式 (懒汉模式和饿汉模式)等一些方法的操作 包括面向对象oop的规则 等
这节还是介绍单例模式的其他操作
内部类创建使用单例模式
因为反射的存在 像这种单例模式都是不安全的
大概演示一下反射机制
通过此段代码我们可以发现创建空参构造方法以后 然后设置访问权限 将私有化权限设置取消 并且将我们的对象 获取到空参构造器内 发现对象的数据集 地址是不一样的 这样我们的单例就被反射给破坏了
这种方法也好解决 还是根据之前懒汉模式一样 设置synchronized 锁对类方法 进行判断 抛出异常这样就不会产生 反射破坏单例模式的异常问题 这里我自定义一个boolean值做判断
这样在运行的时候就会抛出这个反射的异常 其实解决这样并不能完全解决我们的反射异常 当我们修改权限 将私有化权限设置的时候
反射仍然可以破坏单例 在源码中
已经告诉我们通过创建枚举的形式来不能通过反射来破坏枚举
创建枚举类 测试反射能不能破坏单例
打印的结果 很无奈 是表示没有这个无参构造 解决方法就是在 创建空参构造的时候设置 参数为有参构造
这个是从源码里查到的 设置string 和int类参数 打印以后就会正常阻止反射破坏单例 异常报错 ;
下一节 23种设计模式的 抽象工厂模式