ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计原则看这篇就够了

2022-01-10 17:59:57  阅读:145  来源: 互联网

标签:原则 接口 这篇 Mother 设计 尽量 方法 我们


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

标签:原则,接口,这篇,Mother,设计,尽量,方法,我们
来源: https://blog.csdn.net/weixin_42415173/article/details/122415879

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有