面向对象编程中的5大原则(SOLID原则)(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是一组指导设计和编程的基本原则,旨在帮助开发人员编写更具灵活性、可重用性、可维护性和可扩展性的代码。这些原则包括:
-
单一职责原则(SRP):
不同的功能封装成不同的类,每个类只负责一个单一的功能,
类的改变不会影响到其他类 -
开闭原则(OCP):
扩展开放:添加新的实现类是开放的
修改关闭:修改原有代码是关闭的 -
里氏替换原则(LSP):
父类出现的地方一定可以用子类的对象替换,子类不可以改变父类的行为和状态
违反里氏替换原则的前提是错误的继承
不重写父类的默认方法,只重写父类的抽象方法。如果重写了父类的默认方法,那么就是修改了父类的行为 -
接口隔离原则(ISP):
将一个大接口拆分成多个小接口,客户端不应该依赖它不需要的接口 -
依赖倒置原则(DIP):
不要仅限于调用实现类,如果实现类添加或者改变,那么调用实现类的也需要改变。
依赖的是实现类的接口,如果实现类添加或者改变,调用实现类的不需要改变
依赖倒置原则强调的是针对接口编程而不是针对实现编程,具体而言就是要面向抽象编程,而不是面向具体实现编程
扩展
-
迪米特(LoD)[又称最少知识(LKP)]原则:
只与你的直接朋友交谈,不跟陌生人说话 -
合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
举例子:手机的Type-C接口
单一职责原则(SRP):实现类负责不同的功能(比如充电、传输),但是一个实现类只负责一个功能
开闭原则(OCP):实现类实现不同的功能是开放的,但是对修改本身Type-C接口的功能是关闭的
里氏替换原则(LSP):只可以重写Type-C接口的抽象方法,但是对Type-C接口本身的行为(默认方法)是禁止重写的
接口隔离原则(ISP):不应该实现它不需要的功能,比如Type-C接口的音频抽象方法,应该重新写一个接口负责音频的功能
依赖倒置原则(DIP):手机传输不是依赖数据线,而是依赖Type-C接口,这样就不会因为数据线的改变导致不能使用
迪米特(LoD)[又称最少知识(LKP)]原则:
任何电脑不需要直接和手机连接,需要通过数据线连接,确保连接不会受设备的改变而影响