OOP 五大设计原则
2023-03-25 22:54:07 20 举报
AI智能生成
设计原则
作者其他创作
大纲/内容
单一职责原则(SRP)
一个类或模块只负责完成一个职责(功能)
设计的粒度要小、功能要单一
开闭原则(OCP)
软件实体(模块/类/方法等)应该 “对扩展开发,对修改关闭”
编写代码时需要具有扩展意识、抽象意识、封装意识、预留扩展点等
里氏替换原则(LSP)
子类对象能够替换父类对象出现的任何地方,并且要保证原来的程序逻辑行为不变和正确性不被破坏
也就是子类要完美继承父类的设计初衷,并做了增强
违背 LSP 的设计:
- 子类违背父类声明要实现的功能
- 子类违背父类的输入、输出、异常的约定
- 子类违背父类注释中的特殊说明
接口隔离原则(ISP)
接口的调用者不应该被强迫依赖它不需要的接口
这里的接口可以理解为:
- 一组 API 接口集合
- 单个 API 接口或函数
- OOP 中的接口概念
依赖反转原则(DIP)
高层模块不要依赖低层模块。高层模块和低层模块应该通过抽象来互相依赖。
除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象
除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象
在调用链上,调用者属于高层,被调用者属于低层
在业务开发中,高层模块依赖底层模块是没有任何问题的,这条原则主要还是
用来指导框架层面的设计,跟 IOC 类似
用来指导框架层面的设计,跟 IOC 类似
符合 DIP 原则的典型例子有:
- Tomcat 和 我们编写的 Web 应用程序代码,都依赖于 "Servlet 规范" 这个抽象
- JVM 和 Java 代码,都依赖于 "字节码文件" 这个抽象
SOLID
S:单一职责原则(SRP)
一个类或模块只负责完成一个职责(功能)
O:开闭原则(OCP)
软件实体(模块/类/方法等)应该 “对扩展开发,对修改关闭”
L:里氏替换原则(LSP)
子类对象能够替换父类对象出现的任何地方,并且
要保证原来的程序逻辑行为不变和正确性不被破坏
要保证原来的程序逻辑行为不变和正确性不被破坏
I:接口隔离原则(ISP)
接口的调用者不应该被强迫依赖它不需要的接口
D:依赖反转原则(DIP)
高层模块不要依赖低层模块。高层模块和低层模块应该通过抽象来互相依赖。
除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象
除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象
0 条评论
下一页