设计原则与思想 八大设计原则 solid原则 单一职责原则 Single Responsibility Principle 开闭原则 Open Closed Principle 里氏替换原则 Liskov Substitution Principle 接口隔离原则 Interface Segregation Principle 依赖反转原则 Dependency Inversion Principle 设计模式(需要从实现方式,使用场景两方面看) 创建型 单例模式 使用场景 重点对资源的共享,避免了资源的重复创建 实现方式 饿汉式 懒汉式 双重检测 工厂模式 实现方式 简单工厂 方法工厂 抽象工厂 使用场景 封装创建过程,方便创建对象 建造者模式 实现方式 创建builder,使用builder来校验参数,创建对象 使用场景 一般用来创建同一类型的复杂对象(比如构造参数复杂),或者不想对外暴露set方法 原型模式 实现方式 浅拷贝 深拷贝 使用场景 当创建对象的成本比较大,需要的对象和已知对象的差别不大,可以拷贝已知对象来创建新的对象。 结构型-对象与对象之间组合成新的结构 代理模式 实现方式 静态代理 动态代理 使用场景 利用已知对象对它增强,mybatis的拦截器,spring的AOP 桥接模式 概念 一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。 装饰者模式 概念 装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能。 特点 可以对原始类嵌套使用多个装饰器 适配器模式 实现方式 类适配器 对象适配器 使用场景 是用来做适配,它将不兼容的接口转换为可兼容的接口 门面模式 概念 门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 组合模式 享元模式 顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象 行为型 观察者模式 实现方式 发布-订阅型 1:N 生产-消费型 N:N 使用场景 解耦数据的产生和数据的消费 模板模式 实现方式 定义好模板框架,暴露接口给子类实现 使用场景 主要是用来扩展和复用代码 策略模式 实现方式 可以使用工厂类来创建策略,动态选择策略(if else,或者反射) 使用场景 将对象的创建和使用解耦 责任链模式 实现方式 将流程拆分成一个一个的步骤,交给handler处理 使用场景 适合业务复杂,多变的场景 状态模式 实现方式 分支逻辑法 查表法 态模式 使用场景 游戏人物,审批流场景 迭代模式 实现方式 创建迭代器,遍历数据,不影响集合对象 使用场景 遍历数据 访问者模式 备忘录模式 使用场景 数据备份 命令模式 解释器模式 中介模式