面向对象的3个要素,5个原则 和 6视点
面向对象三要素(即面向对象三大特性)
封装(Encapsulation)
继承(Inheritance)
多态(Polymorphism)
面向对象五原则
单一职责原则(SRP)
开放-封闭原则(OCP)
Liskov替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
面向对象六视点
复用(Reusibility)
扩展(Extensibility)
分离(Separability)
变化(Change)
简约(Simplicity)
一致(Coherance)
封装、继承、多态是面向对象的三大特性,在设计程序的时候并不是说类的结构体现出了这三个特性就是面向对象,其实真正的面向对象设计是要符合下面的五大原则:
单一职责原则(SRP)
开放封闭原则(OCP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
此处简单解说一下这五大原则:
单一职责原则(SRP)
最简单、最容易理解却最不容易做到的一个设计原则,所谓的单一职责原则是指一个类应该仅有一个引起它变化的原因
例:
在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,在这个假设下,职员类里的每个方法都要if else判断是哪种情况,从类结构上来说将会十分臃肿,并且上述三种的职员类型,不论哪一种发生需求变化,都会改变职员类,其结果将会非常混乱,这个是大家所不愿意看到的!
参考资料:http://www.cnblogs.com/seacryfly/archive/2011/12/29/blog1.html
开放封闭原则(OCP)
既开放又封闭,对扩展是开放的,对更改是封闭的!
扩展即扩展现行的模块,当我们软件的实际应用发生改变时,出现新的需求,就需要我们对模块进行扩展,使其能够满足新的需求;更改封闭即是在我们对模块进行扩展时,勿需对原有程序代码和DLL进行修改或重新编译文件!这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装、抽象机制和多态技术!
参考资料:http://www.cnblogs.com/seacryfly/archive/2011/12/29/blog2.html
里氏替换原则(LSP)
子类可以替换父类并且出现在父类能够出现的任何地方,这个原则也是在贯彻GOF倡导的面向接口编程,在这个原则中父类应尽可能使用接口或者抽象类来实现,子类通过实现父类接口,能够替换父类的使用地方。
依赖倒置原则(DIP)
传统的结构化编程中,最上层的模块通常都要依赖下面的子模块来实现,也称为高层依赖低层!
所以依赖倒置原则就是要逆转这种依赖关系,让高层模块不要依赖低层模块,所以称之为依赖倒置原则!
接口隔离原则(ISP)
这个原则的意思是:使用多个专门的接口比使用单个接口要好的多!
延伸阅读
(1)深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想-CSDN博客
(2)面向对象编程的弊端是什么
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?