设计模式之——面向对象的六大原则

时间:2021-10-31 17:25:44

一、单一职责原则
    定义:Single Responsibility Principle,即SRP:一个类应该是相关性很高的方法与数据的封装,不同的职责应该分别封装到不同的类或模块当中。
    原理:如果一个类的职责过多,就等于这些职责耦合了在一起,这样会使得设计容易变得脆弱,当发生变化时,设计容易发生非意料性的破坏。所以设计的时候应该遵守单一职责原则,其实它的核心就是解耦和内聚性的增强。

二、开闭原则
    定义:Open Close Principle,即OCP:软件中的对象应该是对扩展是开放的,而对修改是封闭的。
    原理:软件开发的过程中,因升级和维护等原因需要对原有系统的代码进行修改,可能会将错误引入原有系统,从而对原有系统造成破坏。所以,在对系统代码进行维护和升级时,采取扩展的方式来进行而不是修改原有的代码,这样就避免了该问题,设计也变得更灵活。这样的设计就使得系统有一定的稳定性和延续性。

设计模式之——面向对象的六大原则

三、里氏替换原则
    定义:Liskov Substitution Principle,即LSP:主张使用”抽象”和”多态”将设计中的静态结构改为动态结构,维持设计的封闭性。任何基类中可以出现的地方,子类一定可以出现。
    原理:抽象。其核心的原理就是抽象,提高了代码的可拓展性。
    里氏替换原则往往是和开闭原则结合在一起的,通过里氏原则能实现对扩展开放、对修改封闭的目的。

设计模式之——面向对象的六大原则

四、依赖倒置原则
    定义:Dependence Inversion Principle,即DIP:高层模式不依赖底层模块,两者都应依赖抽象;抽象不依赖细节,但细节依赖抽象。
    原理:开发过程中,如果上层调用下层,上层依赖下层,当下层发生变动时上层也会跟着变化,这样会使得模块的复用性降低。而依赖倒置原则,使得程序依赖于抽象,不依赖具体实现,这样就降低了客户与实现模块间的耦合,这样就使得整个系统的系统拓展更加灵活。

五、接口隔离原则
    定义:InterfaceSegregation Principles,即ISP:客户端不应依赖它不需要的接口;一个类对另一个类的依赖应建立在最小的接口上。
    原理:将非常庞大、冗杂的接口拆分成更小的和更具体的接口,客户端只需要相关的最小接口的方法,从而使得系统解开耦合,变得更容易重构和升级

六、迪米特原则
    定义:Law of Demeter,即LOP:最少知识原则,一个对象应该对所调用的对象尽可能少的了解,以减少对象间的耦合。
    原理:类之间的关系越紧密,耦合性就越强,这样就不利于系统的维护和升级。所以一个类应对所调用的类知道的最少,只需要知道将要调用到的方法即可,从而降低类间的耦合,提高扩展性。