设计模式(个人理解)
原则:
- OCP 增强、扩展、适配
- LSP 实现多态尽量使用接口,而不是类
- DI 解决耦合
- 迪米特 单一职责
- 接口隔离 面向接口编程(前后端分离)
四种耦合(我编的):
- 值耦合 配置文件、抽取常量
- 算法耦合 提供引擎,配置算法
- 数据结构耦合 提供结构单元,配置数据结构
- 类名耦合 上层用工厂,下层用反射
结论:如何解耦?配置(DI)!
构建型模式:
- 单例模式 实际需求
- 原型模式 节约成本
- 工厂方法 将细节对象向下抛出,保持上层代码的高度抽象(解决类名耦合)
- 抽象工厂 将细节对象向下抛出,保持上层代码的高度抽象(解决类名耦合)
- 建造者 灵活、按需配置
结构型模式:
- 享元 节约成本
- 桥接 多态组合(组合优于继承)
- 外观 面向接口编程
- 组合 将数据结构以配置的方式向下抛出,提供树型数据结构单元(node&list),供开发者配置,保持上层代码的高度抽象(解决数据结构耦合)
- 适配器 后期适配技术,利用双实现的方式生成适配器类,将两个不相干的类通过多态连接到一起
- 装饰者 前期扩展技术,利用构造器传入对象生成扩展类,非侵入式增强类
- 静态代理 后期增强技术,利用组合生成代理类,非侵入式增强类
- 动态代理 后期增强技术,利用反射实现多态,侵入式增强类
行为型模式:
- 模板方法 继承
- 中介者 组合中介者类,负责类的通信与调度(组合优于继承)
- 观察者 响应式编程引擎 自旋 双向绑定 动态编程
- 命令 响应式编程驱动
- 备忘录 快照技术
- 责任链 将数据结构以配置的方式向下抛出,提供链式数据结构单元(node),供开发者配置,保持上层代码的高度抽象(解决数据结构耦合)
- 迭代器 将数据结构以配置的方式向下抛出,提供单元、容器与引擎(node&container&engine),供开发者使用,保持上层代码的高度抽象(解决数据结构耦合)
- 解释器 将算法以配置的方式向下抛出,提供配置语法,保持上层代码的高度抽象(解决算法耦合)
- 策略 将算法以枚举的方式向下抛出,提供预定义实现方式,保持上层代码的高度抽象(解决算法耦合)
- 状态 将算法以枚举的方式向下抛出,提供预定义实现方式,内置轮询引擎,保持上层代码的高度抽象(解决算法耦合)
- 访问者 将算法以接口的方式向下抛出,提供定义接口,并可设置多维策略,保持上层代码的高度抽象(解决算法耦合)
注:全部是个人思考感悟理解哈!如有错误欢迎批评指正~