GOF设计模式之单例模式(二)
单例模式之静态内部类
1 | /** |
单例模式之枚举式
1 | /** |
单例模式总结
主要:
– 饿汉式(线程安全,调用效率高,不能延时加载)
– 懒汉式(线程安全,调用效率不高,能延时加载)
其它:
– 双重检查锁式(由于JVM底层内部模型原因,偶尔会出问题,不推荐使用)
– 静态内部类式(线程安全,调用效率高,可以延时加载)
– 枚举式(线程安全,调用效率高,不能延时加载)
如何选用
单例对象占用资源少,不需要延时加载:
– 枚举式好于饿汉式
单例对象占用资源大,需要延时加载:
– 静态内部类式好于懒汉式
以上除了(枚举式)不能被反射和反序列化破解以外,其它都能破解
如何防止反射的破解(简单了解)
1 | //在私有构造器上加上检查,不为空的时候手动抛出异常 |
如何防止反序列化破解(简单了解)
1 | //在反序列化时调用此方法直接返回instance,不需要在单独创建对象。 |