开发原则、设计模式及相关资源
Development Principle
Principle | FullName | Description |
---|---|---|
单一职责原则 | Single Responsibility Principle (SRP) | 一个类只负责一个职责 |
开闭原则 | Open/Closed Principle (OCP) | 软件应对扩展开放,对修改关闭 |
里氏替换原则 | Liskov Substitution Principle (LSP) | 子类可替换父类而不影响程序 |
接口隔离原则 | Interface Segregation Principle (ISP) | 使用多个专门接口而非一个总接口 |
依赖倒置原则 | Dependency Inversion Principle (DIP) | 高层模块不依赖低层模块,而依赖抽象 |
迪米特法则 | Law of Demeter (LoD) | 一个对象应与直接对象交互 与间接对象隔离 |
合成复用原则 | Composite/Aggregate Reuse Principle (CARP) | 使用组合/聚合而非继承来复用代码扩展功能 |
Design Pattern
- 创建型模式:如何创建对象,提升代码灵活性和可复用性
- 结构型模式:如何将类或对象组装成结构,并保持结构的灵活和高效
- 行为型模式:类与对象间如何交互、划分职责以更好完成任务
Type | Design Pattern | Popularity | Description |
---|---|---|---|
创建型模式 | 单例模式 | 一个类只有一个实例并提供访问该实例的全局节点 | |
工厂方法模式 | 父类提供创建对象的接口 子类决定实例化对象类型 | ||
建造者模式 | 将复杂对象构建过程分解为简单步骤 | ||
抽象工厂模式 | 创建一系列相关对象而无需指定具体类 | ||
原型模式 | 可复制现有对象创建新对象 且代码无需依赖所属类 | ||
结构型模式 | 适配器模式 | 可转换对象接口 使得接口不兼容对象能够交互 | |
装饰器模式 | 动态为对象添加方法 不影响其他对象 | ||
代理模式 | 为对象提供替代或占位符 控制原对象访问 | ||
组合模式 | 将对象组成树形结构 表示部分-整体层次 | ||
外观模式 | 为程序库、框架或其他复杂类提供简单接口 | ||
享元模式 | 共享多个对象相同状态 在有限内存中提高细粒度 | ||
桥接模式 | 抽象部分与实现部分分离 在开发时独立调用 | ||
行为型模式 | 迭代器模式 | 在不暴露底层数据结构情况下遍历集合中元素 | |
策略模式 | 定义一系列算法 封装至不同类 使得类能够相互替换 | ||
观察者模式 | 对象状态改变时通知其"观察者"(依赖)更新 | ||
命令模式 | 将请求封装为对象 通过队列或日志操作请求 | ||
模板方法模式 | 在父类中定义算法框架 子类不修改结构仅实现特定步骤 | ||
责任链模式 | 请求沿处理者链传递 直到完成任务 | ||
状态模式 | 对象在内部状态变化时改变行为 | ||
中介者模式 | 限制对象之间的交互 通过中介者实现 减少对象依赖关系 | ||
备忘录模式 | 允许在不暴露对象细节情况下保存和恢复对象状态 | ||
访问者模式 | 隔离算法与操作对象 | ||
解释器模式 | 定义语法规则 建立解释器解析和执行特定表达式 |
Best practice
- 产品注册模板类 + 单例工厂模板类