Design Pattern

开发原则、设计模式及相关资源

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

  1. 创建型模式:如何创建对象,提升代码灵活性和可复用性
  2. 结构型模式:如何将类或对象组装成结构,并保持结构的灵活和高效
  3. 行为型模式:类与对象间如何交互、划分职责以更好完成任务
Type Design Pattern Popularity Description
创建型模式 单例模式 \star 一个类只有一个实例并提供访问该实例的全局节点
工厂方法模式 \bigstar 父类提供创建对象的接口 子类决定实例化对象类型
建造者模式 \bigstar 将复杂对象构建过程分解为简单步骤
抽象工厂模式 \bigstar 创建一系列相关对象而无需指定具体类
原型模式 \star 可复制现有对象创建新对象 且代码无需依赖所属类
结构型模式 适配器模式 \bigstar 可转换对象接口 使得接口不兼容对象能够交互
装饰器模式 \star 动态为对象添加方法 不影响其他对象
代理模式 为对象提供替代或占位符 控制原对象访问
组合模式 \star 将对象组成树形结构 表示部分-整体层次
外观模式 \star 为程序库、框架或其他复杂类提供简单接口
享元模式 共享多个对象相同状态 在有限内存中提高细粒度
桥接模式 抽象部分与实现部分分离 在开发时独立调用
行为型模式 迭代器模式 \bigstar 在不暴露底层数据结构情况下遍历集合中元素
策略模式 \bigstar 定义一系列算法 封装至不同类 使得类能够相互替换
观察者模式 \bigstar 对象状态改变时通知其"观察者"(依赖)更新
命令模式 \bigstar 将请求封装为对象 通过队列或日志操作请求
模板方法模式 \star 在父类中定义算法框架 子类不修改结构仅实现特定步骤
责任链模式 \star 请求沿处理者链传递 直到完成任务
状态模式 \star 对象在内部状态变化时改变行为
中介者模式 \star 限制对象之间的交互 通过中介者实现 减少对象依赖关系
备忘录模式 允许在不暴露对象细节情况下保存和恢复对象状态
访问者模式 隔离算法与操作对象
解释器模式 定义语法规则 建立解释器解析和执行特定表达式

Best practice

  1. 产品注册模板类 + 单例工厂模板类

Resource

  1. 书籍
  2. 博客
  3. 视频
0%