设计模式
设计模式
设计模式:可扩展、可维护、可理解
设计模式六大原则
单一职责
业务逻辑放在同一个类
迪米特:降低耦合 一个类减少对外的依赖
接口隔离:内部逻辑尽量减少对外暴露
里式替换:不要破幻继承体系,不要覆盖父类的非抽象方法
依赖倒置:通过接口去依赖,不要去调实现类
开闭原则:对扩展开放,对修改关闭
工厂模式(创建对象不会给业务方暴露逻辑,把创建者调用者分开)
简单工厂 (创建逻辑封装起来)
工厂方法模式
创建抽象工厂类,靠工厂的子类去实现,降低耦合度,方便扩展
策略模式 定义一组算法 将每一个算法封装起来,从而让他们可以互相切换
单例设计模式(面试重点)
需要频繁实例化然后销毁的对象
饿汉式:项目启动就去实例化他 静态变量和静态代码块是类加载的时候执行
懒汉式: 延迟初始化静态方法:调用的时候才会初始化执行
单例的双重检查锁:
volatile:禁止重排序,防止实例化多个对象

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

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

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