# pattern-study **Repository Path**: self-code/pattern-study ## Basic Information - **Project Name**: pattern-study - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pattern-study #### 介绍 ##### 设计模式的七个原则 + 开闭原则 对扩展开放,对修改关闭 + 依赖倒置原则 不依赖具体的实现,统配配置注入的具体类实现功能 + 单一职责原则 一个类/接口只负责一件事,提高代码的可读性 + 接口隔离原则 + 迪米特法则 最少知道原则,只和最少的类打交道 ##### 常见的设计模式 ###### 创建型 + 工厂模式 + 建造者模式 + 单例模式 + 序列化的解决方案 重写对应的resolveObject()方法返回对象本身 + 反射破坏单例模式的防御(静止通过构造方法反射获取到单例对象) + 克隆破坏单例模式 (重写clone方法返回单例本身) + 原型模式 + 浅拷贝 : 对于对象类型的属性只会拷贝地址 + 深拷贝 : 对于复杂对象属性也需要单独拷贝 ###### 结构型 + 外观模式 facade模式 + 装饰者模式 核心点: 装饰类拥有一个被装饰类的属性引用,详见mybatis的cache接口 + 装饰者模式 则是同一个接口,强调的是接口方法不同实现的装饰 + 适配器模式 类适配器(直接继承)和对象适配器模式(属性引用),适配器强调的是两个不同的接口通过适配器协调实现 + 享元模式 flyweight 大量使用的对象进行缓存 eg: Integer的IntegerCache + 组合模式 组合节点和叶子节点必须实现相同的接口或者继承相同的抽象类 eg: mybatis 中SqlNode类 + 桥接模式 接口和抽象分离 可以灵活扩展类功能避免类爆炸(组合优于继承) + 代理模式 + 模板模式 ###### 行为型 + 模板模式 模板方法约定固定的行为 + 迭代器模式 常见集合类 + 策略模式 工厂去获取指定的策略实现类 + 解释器模式 eg:spring el表达式 + 观察者模式 监听器模式 + 备忘录模式 + 命令模式 + 中介者模式 + 责任链模式