设计模式
文章平均质量分 72
远离bug,珍爱头发
什么是JVM?什么是JDK?什么是JRE?
展开
-
序列化反序列化破坏单例模式的原因及解决方案(以懒汉式为例)
序列化反序列化破坏单例模式的原因及解决方案(以懒汉式为例)原因通过阅读源码发现,反序列化方法的中如果是Object对象则调用,该方法首先会通过一个三目运算来创建序列化的对象。如果这个对象能实例化就创建一个新对象解决方法在通过三目运算创建了对象之后,还会去找这个对象里是否有方法,如果有,则通过这方法返回对象。所以只需要在单例类中新增方法即可原创 2022-12-15 10:47:34 · 337 阅读 · 1 评论 -
23种设计模式——单例模式
饿汉式和懒汉式,解决了并发安全和性能低下问题饿汉式:在类加载时已经创建好该单例对象,在获取单例对象时直接返回对象即可,不会存在并发安全和性能问题。对内存要求非常高,使用懒汉式写法,可以在特定时候才创建该对象;对内存要求不高,使用饿汉式写法,因为简单不易出错,且没有任何线程安全和性能问题枚举, 其代码精简,没有线程安全问题,且 Enum 类内部防止反射和反序列化时破坏单例。...原创 2022-08-15 15:26:59 · 347 阅读 · 0 评论 -
23种设计模式——工厂模式
定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类负责生成具体对象将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)那个类。......原创 2022-08-14 20:55:40 · 570 阅读 · 0 评论 -
23种设计模式——策略模式
对象的某个行为,在不同场景有不同的实现方式(如不同的支付方式),这样就可以将这些实现方法定义成一组策略模式,每个实现类对应一个策略,在不同场景就使用不同实现类,并可以自由切换策略。策略模式需要一个策略接口,不同策略实现不同的实现类,再具体业务中仅持有该策略接口,根据不同场景使用不同实现类即可。...原创 2022-08-13 16:21:20 · 410 阅读 · 0 评论