设计模式

112 阅读2分钟

设计模式

设计模式:可扩展、可维护、可理解

设计模式六大原则

单一职责

业务逻辑放在同一个类

迪米特:降低耦合 一个类减少对外的依赖

接口隔离:内部逻辑尽量减少对外暴露

里式替换:不要破幻继承体系,不要覆盖父类的非抽象方法

依赖倒置:通过接口去依赖,不要去调实现类

开闭原则:对扩展开放,对修改关闭

工厂模式(创建对象不会给业务方暴露逻辑,把创建者调用者分开)

简单工厂 (创建逻辑封装起来)

工厂方法模式

创建抽象工厂类,靠工厂的子类去实现,降低耦合度,方便扩展

策略模式 定义一组算法 将每一个算法封装起来,从而让他们可以互相切换

单例设计模式(面试重点)

需要频繁实例化然后销毁的对象

饿汉式:项目启动就去实例化他 静态变量和静态代码块是类加载的时候执行

懒汉式: 延迟初始化静态方法:调用的时候才会初始化执行

单例的双重检查锁:

volatile:禁止重排序,防止实例化多个对象

图片.png

两次判断对象是否为空
第一次是因为加锁很耗时间和性能,如果对象不为空则不需要加锁
第二次是为了防止两个线程同时获得synchronized锁,所以要判断第二次

图片.png

单例模式是否完全单例?(通过反射是可以破除单例的,可以获得多个对象,可以用instance方法防止反射)

图片.png

对象的生命周期

单例:和容器同生同死
多例:延迟生成,通过jvm垃圾回收机制回收的