AIGC标识 SOLID 五大设计原则

SOLID 五大设计原则(面试笔记)

一句话概括:SOLID 是5个面向对象设计原则,用来写出低耦合、高内聚、易扩展、好维护的代码,是框架设计、代码重构的基础。

S:单一职责原则 Single Responsibility Principle

一个类只应该有一个引起它变化的原因,只负责一件事。

理解

不要写万能大杂烩类。如果一个类既做数据库操作、又做业务计算、又做文件导出,需求改动一处就会影响全部,风险高。

  • ✅ 优点:可读性高、便于单元测试、修改影响范围小
  • ❌ 反面:巨类(God Class),一个类几百上千行,什么都干

面试短句:一个类只承担一项职责,只有一个变更理由。

O:开闭原则 Open/Closed Principle

对扩展开放,对修改关闭。新增功能尽量不要修改原有代码,而是新增代码实现扩展。

理解

原有稳定业务代码尽量不动,新增需求通过继承、接口、策略模式新增类实现。

  • ✅ 优点:原有代码稳定,避免改旧代码引入bug
  • ❌ 反面:来需求就直接在原有类里if/else不断堆砌

面试短句:软件实体应当对扩展开放,对修改关闭;新增功能新增代码,不改动原有稳定逻辑。

L:里氏替换原则 Liskov Substitution Principle

子类实例可以完全替换父类实例,程序行为不会出错。

理解

继承时,子类不能破坏父类原有约定。
不能重写父类正常方法抛出异常、修改入参限制,违背父类行为预期。

核心:继承是is-a关系,不是为了复用代码而强行继承。

面试短句:子类对象可以替换父类对象,不会破坏原有程序逻辑;不要滥用继承。

I:接口隔离原则 Interface Segregation Principle

客户端不应该依赖它不需要的接口,大接口拆成多个小而专一的接口。

理解

不要定义一个巨大接口,里面一堆方法,实现类被迫实现一堆自己用不到的空方法。
按需拆分细接口,实现类只实现自己需要的接口。

面试短句:使用多个细粒度专用接口,不要使用臃肿的大接口,避免实现类依赖不需要的方法。

D:依赖倒置原则 Dependency Inversion Principle

高层模块不应该依赖低层模块,二者都应该依赖抽象;抽象不依赖细节,细节依赖抽象。

理解

不要高层直接new底层实现类,依赖接口/抽象类。
Spring的IoC容器就是典型实践,面向接口编程,注入实现。

面试短句:面向抽象编程,高层与底层都依赖抽象,而不是高层直接依赖底层具体实现。


面试精简背诵版

SOLID是5个面向对象设计原则:

  1. 单一职责:一个类只负责一件事,只有一个变更原因。
  2. 开闭原则:对扩展开放,对修改关闭;新增功能新增代码,不改原有代码。
  3. 里氏替换:子类可以替换父类,不能破坏父类行为,谨慎使用继承。
  4. 接口隔离:拆分臃肿大接口,使用细粒度小接口,不强迫实现无用方法。
  5. 依赖倒置:高层、低层模块都依赖抽象,面向接口编程,不要依赖具体实现。
posted @ 2026-09-26 15:08  赵登科  阅读(2)  评论(0)    收藏  举报