设计原则看这篇就够了

1、单一职责原则

1.1、什么是单一职责原则?

简单的说,就是一个类只负责一个职责!

1.2、为什么要遵循这个原则?

可以提高代码的可读性,可扩展性,可维护性!

假如我们把世界上天文学,地理学,历史等全部知识都汇总到一本书上,那这本书应该有多么的厚,没有人会想读这本书,更不会有人在这本书的后面补充内容!

2、里氏替换原则

2.1、什么是里氏替换原则

简单的说,尽量不要重写父类方法,如果需要重写,输入的参数尽量相同或者更宽松,输出的结果尽量相同或更加约束!

2.2、为什么要遵循这个原则?

可以提高代码的可控性!

假设有一个光头佬开发了类A,你感觉写的还不错,想基于A开发A1,但是发现A的某些方法对你来说不适用,你就重写了A的方法,顺带把用到A的地方都换成A1了,此时代码运行结果就异常了,那不好意思,你完蛋了光头佬过来削你了!如果需要重写,输入的参数尽量相同或者更宽松,输出的结果尽量相同或更加约束!

3、依赖倒置原则

3.1、什么是依赖倒置原则?

简单的说,就是面向接口编程!类和类相互不要又依赖,要依赖于接口!

3.2、为什么要遵循这个原则?

可以提高代码的灵活性!

假如一个Book类,包含getContent()方法,还有一个Mother类,MotherRead()方法,参数为Book,方体体为调用book.getContent()方法,这相当于Mother类依赖与Book类,但是我们的Mother,不可能只会读书把,还会读报纸把!所以说我们需要一个IReader的接口,里面有getContent()抽象方法,BookNewsPaper都实现这个接口即可!而MotherRead()方法的参数为IReader就欧克了!

4、接口隔离原则

4.1、什么是接口隔离原则?

简单的说,接口里面的抽象方法尽量少而精!

4.2、为什么要遵循这个原则?

可以提高我们代码的可读性,可维护性!

试想一下,我们设计功能模块的时候,把所有的抽象方法都放到一个接口,那么实现这个抽象接口的类,得把所有的方法都实现一遍,即使ctrl+c,ctrl+v也很麻烦,如果真的这么做了,放心,必须实现这个接口的其他程序员,肯定会骂的这个人狗血淋头!

5、迪米特法则

5.1、什么是迪米特法则?

两种说法,第一种,只与直接朋友通信,第二种依赖的类暴露的方法越少越好!

5.2、为什么要遵循这个原则?

可以降低代码的耦合性,提高代码的复用性!

举个简单的例子,给电脑关机的时候,会有保存应用程序,关闭应用程序,关闭屏幕,关闭主机,还有一个close方法包含了前面四个步骤!如果这5个方法都对外暴露,对于我们用户来说其实只需要调用close方法就可以了,但是每个人的理解都不一样,有的人全部调用,有的人调用几个,这不无疑增加负担嘛,大大提高了耦合性!

6、开闭原则

6.1、什么是开闭原则?

简单的说,对类或者功能的修改保持关闭状态,对扩展保持开放状态!

6.2、为什么要遵循这个原则?

可以大大降低我们代码的错误率!

我们在了解Spring的时候,应该对AOP(面向切面编程)应该不陌生把,其实就是我们可以在方法调用前,或者调用后执行我们自己的逻辑,那这是不是和开闭原则很类似!


来个小总结,**单一职责原则建议我们类的职责尽量单一,里氏替换原则建议我们尽量不要修改父类的方法,依赖倒置原则建议我们要面向接口编程,接口隔离原则建议我们接口尽量小而精,迪米特法则建议我们降低类之间的耦合,开闭原则建议对原代码不要修改,而要扩展!**这些东西看似离我们很远,但是他会有助于我们带框架源码的理解,让我们更懂设计人的想法,让我们的代码更加优雅!当然上面只是我看了一些博客之后自己的理解,如有需要更正的地方,请大家评论区留言呀!同时可以推荐大家看看《大话设计模式》 + 《设计模式之禅》这两本书!

感谢大家的阅读,我是爱你三千遍,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿!❤

参考链接:https://blog.csdn.net/zhengzhb/article/details/7278174?utm_source=app&app_version=4.21.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

上一篇:Linux存储管理——EXT4文件系统【CenOs】


下一篇:人工智能