moklgy's blog moklgy's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 后端文章

    • 技术题
  • .netcore

    • 《asp.netcore》笔记
    • 《设计模式》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

moklgy docs

全栈初级开发工程师
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 后端文章

    • 技术题
  • .netcore

    • 《asp.netcore》笔记
    • 《设计模式》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 对象之间的关系
  • SOLID原则
    • S单一职责原则
    • O开闭原则
    • L里氏替换原则
    • I接口隔离原则
    • D依赖倒置原则
  • 创建型
  • 结构型
  • 行为型一
  • 行为型二
  • 其他模式与组合使用
  • 《设计模式》
moklgydocs
2025-10-12
目录

SOLID原则

# S单一职责原则

  1. 对于扩展,类应该是“开放”的;
  2. 对于修改,类则应是“封闭”的

# O开闭原则

  1. 对扩展开放,对修改关闭

# L里氏替换原则

  1. 严格遵守继承的规则
  2. 子类不能破坏父类的约定
    1. 先定 “规矩”(契约):父类不只是放通用代码,更要明确 “能做什么、不能做什么”(前置条件、后置条件、异常情况)。
    2. 子类 “守规矩”:子类可以扩展功能,但不能破坏父类的规矩 —— 比如父类允许的输入,子类不能拒绝;父类保证的结果,子类不能反悔。
    3. 替换无感知:使用父类的地方,换成任何子类,代码都不用改,结果都正确。

# I接口隔离原则

  1. 尽量缩小接口的范围,使得客户端的类不必实现其不需要的

行为

  1. 例如,Interface CloudService{A,B,C,D,E,F}
    1. 客户A需要接口CloudService的A,B,C功能,但是不需要E,F功能,那么我们就不要提供给客户E,F功能,
    2. 客户B需要E,F 功能,那么我们就不要提供给客户A,B,C功能,
    3. 客户C需要所有功能,那么我们可以把A,B,C,分离出来,作为一个接口,E,F 抽离出来,作为一个服务
  2. 注意: 不能滥用这种方式,如果不可细分了,就没必要再细分

# D依赖倒置原则

  1. 高层次的类不能依赖低层次的类
  2. 高层次和低层次应该依赖与抽象接口
  3. 抽象接口不应依赖于具体实现
  4. 具体实现应该依赖于抽象接口

编辑 (opens new window)
#solid
上次更新: 2026/03/11, 06:51:38
对象之间的关系
创建型

← 对象之间的关系 创建型→

最近更新
01
鉴权服务中心
03-11
02
聚合根
03-11
03
补充
02-06
更多文章>
Theme by Vdoing | Copyright © 2019-2026 moklgy's blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式