面向对象的六大基本原则
更新: 6/6/2026 字数: 0 字 时长: 0 分钟
单一责任原则
单一责任原则/SRP(Single Responsibility Principle),其核心思想是一个类应该承担且只承担一个责任
单一责任原则的优点是降低类的复杂度
开闭原则
开闭原则/OCP(Open Closed Principle),其核心思想是一个类,模块和函数应该对拓展开放,对修改关闭
开闭原则最常见的实践就是类的继承和接口的实现,通过继承和实现,我们可以轻易的在不改变原本的类/接口本体的情况下对其功能进行拓展
里氏替换原则
里氏替换原则/LSP(Liskov Substitution Principle),其核心思想是一个地方如果使用到了某个类的父类,那么使用他的子类应该也是可以正常运行的,反之则不可以
里氏替换原则之间点出在继承关系中,子类的功能应该完全囊括父类的功能
依赖倒置原则
依赖颠倒原则/DIP(Dependence Inversion Principle),其核心思想是模块之间应该是通过抽象来互相依赖,不应该依赖其本身
一个具体的实践是,在DDD中,Domain层往往会使用Repository层提供的获取Domain实体的功能,但是Domain层往往不会依赖于真正的Repository实现类,而是在Domain中实现一个Repository接口,然后定义好自己要使用的方法的返回值和入参,然后让Repository自己对其进行实现
接口隔离原则
接口隔离原则/ISP(Interface Segregation Principle) ,其核心思想是客户端应该只依赖他需要的接口
举个例子,我们现在想要一根香蕉,然后实现一个类,根据单一责任原则,这个类应该只有获取香蕉一个功能
然后这个类中实现了许多方法,比如给猴子香蕉你会丢过去,给陌生人香蕉你会递过去,给你的好基友香蕉你会丢过去,给孩子香蕉你会剥好给他
我们会发现这个类过于臃肿,如果我现在没有孩子,只是在过年回家的时候会遇到小孩,那这个类的给孩子用的方法在大多数时候就是完全多余的
这个时候我们就应该将不同的方法拆分成不同的接口,然后每个接口实现其各自的功能,我们在具体的使用的时候应该只使用这个接口的功能,而接口则被一个或多个实现类实现
迪米特法则
迪米特原则/LoD(Law of Demeter),其核心思想是一个类应该对其引用的类知道的最少
这个设计模式最常见的实现就是当一个类被另一个类引用时,他应该对外暴露最少的方法,进而引出了方法的不同透明度
一个常见的做法是,一个类(引用类)调用另一个类(被引用类)的方法,其返回结果可能是中间类,然后我们的引用类就需要进一步了解中间类的使用方法才可以完成我们想要的功能的实现,这个时候,依照迪米特法则,如果我们的中间类要被调用的方法是已知的(比如中间类有且只有一个方法,且这个方法一般会在获取后立刻使用),那我们就可以在被引用类中直接完成中间类方法的使用,而不让引用类调用中间类的方法