OOP七大原则

前言

我以为的勇敢是明知不可为而为之的浪漫,所以勇敢的去做自己该做的事吧,有无遗憾都不重要,加油热爱生活的程序员。
开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则、合成复用原则。

一、开闭原则

对外扩展开放,对修改关闭。简单的理解为:对一个类允许扩展功能,但不能影响到现有功能模块。对提供提供方开放,对使用方关闭。例如:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

二、里氏替换原则

继承必须确保超类所拥有的性质在子类中仍然成立。简单理解为:子类拥有超类的功能,可以扩展超类功能,但不能修改超类的功能。简单说就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
简单归纳为四点:

1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
2、子类中可以增加自己特有的方法
3、 当子类的方法重载父类的方法时,方法的前置条件(即方法的输入参数)要比父类的方法更宽松
4、当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的的输出/返回值)要比父类的方法更严格或相等

三、依赖倒置原则

要面向接口编程,不要面向实现编程。简单的理解为:高层模块不依赖底层模块,而都应该依赖于抽象接口。换而言之,设计程序应该依赖于抽象接口,而不是具体的实现。
可以归纳为三点:

  1. 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
  2. 接口或抽象类不依赖于实现类
  3. 实现类依赖于接口或抽象类
四、单一职责原则

控制类的粒度大小,将对象解耦,提高内聚性。简单理解为:一个方法只做一个功能,一个类只完成该类既定事务,例如:定义WebConfig是处理跨域问题的类,那么该类就只做跨域问题,而不再做其他事务。

五、接口隔离原则

为各个类建立其需要的专用接口。简单理解为:不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪。接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活。类与类之间的依赖应该建立在最小的接口上。

六、迪米特法则

只与你的直接朋友交谈,不与间接朋友直接联系。简单的理解为:你和B是好朋友,而C是B的好朋友,你想要找C帮一些忙,怎么办呢?你肯定不能直接去找,所以你只能找B,然后通过B联系到C,最终把事情做好。而B就是你与C之间的中介。

七、合成复用原则

尽量使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。简单的理解为:电脑和U盘的关系,U盘不会因为电脑的没了,而无法使用,U盘依然可以独立存在,仍然可以在其他设备上使用。电脑和U盘就是两个相互独立的东西,不会因为另一个的损坏而影响其正常运行。

祝语

专一并坚持是程序员独有浪漫,祝所有程序都过上自己想要的生活,加油吧!

猜你喜欢

转载自blog.csdn.net/qq_49014164/article/details/125818586