设计模式

1、单例模式

单例模式的六种方式
https://www.cnblogs.com/z00377750/p/9136821.html
饿汉式,在类加载的时候生成实例,需要实例的时候可以直接提供(像个急切的饿汉)。但是这个实例可能并不会用到,类加载的时候实例化就显得没有必要。解决方式有两种:第一种是使用静态内部类的形式。第二种是使用懒汉式。懒汉式可能会有线程安全问题,于是产生了双重检测机制(DCL)的懒汉式。
单例模式的破坏
https://blog.csdn.net/hqy1719239337/article/details/83028387
防止序列化和反序列化时破坏:
在Singleton中定义readResolve方法,并在该方法中指定要返回的对象的生成策略

private Object readResolve(){
        return instance;
    }

防止反射破坏:
在构造方法中增加判断

private Singleton() {
if (null != SingletonClassInstance.instance)
  throw new RuntimeException();
}

或者

private Singleton(){
        if(flag){
            flag=false;
        }
        else {
            throw new RuntimeException("单例模式遇到攻击,第二个对象未创建成功");
        }   
    }

2、命令模式

结合Hystrix中的应用

3、策略模式

结合线程池的拒绝策略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容