美文网首页
面向对象设计原则(SOLID)

面向对象设计原则(SOLID)

作者: forping | 来源:发表于2020-12-07 10:39 被阅读0次

    SOLID 是面向对象设计重要原则的首字母缩写.
    当我们设计类和模块时,遵守 SOLID 原则可以让软件更加健壮和稳定。

    单一职责原则(SRP:Single Responsibility Principle)

    一个类有且只有一个职责。因为类就像容器一样,它能添加任意数量的属性、方法等。
    但实现太多,这个类就会变得笨重。任意小的改变都将导致这个类的变化。当你改了这个类,你将需要重新测试一遍。
    如果遵守 SRP,每一个类将负责单一的问题、任务或者它关注的点,你的类将变得简洁和灵活。当发生改变, 只需要修改相应的类,只有这个类需要再次测试。SRP 核心是把整个问题分为小部分,并且每个小部分都将通过一个单独的类负责。

    开放封闭原则(OCP:Open Closed Principle)

    一个类应该对扩展开放,对修改关闭。一旦你创建了一个类并且开始使用它,你不应该修改它。因为如果改变它,很可能你的改变会引发程序的崩溃。
    如果你需要一些额外功能,你应该扩展这个类而不是修改它,比如说创建子类,或者使用面向接口编程,定义一些接口,用新类去实现接口.

    里氏替换原则(LSP:Liskov Substitution Principle)

    子类应该是可替换基类的,也就是说任何基类可以出现的地方,子类一定可以出现。
    当通过继承实现多态行为,如果子类没有遵守LSP,可能会让程序引发异常。所以谨慎使用继承,只有确定是“is-a”的关系时才使用继承。

    迪米特法则( LOD:Law of Demeter)

    如果两个对象无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。
    其目的是降低类之间的耦合度,提高模块的相对独立性。

    接口隔离原则(ISP:Interface Segregation Principle)

    类不应该被迫依赖不需要的方法,也就是类不应该依赖不需要的接口, 且一个接口应该拥有尽可能少的行为,它是精简的,也是单一的。

    依赖倒置原则(DIP:Dependence Inversion Principle)

    高层模块不应该依赖低层模块,相反,应该依赖抽象类或者接口。这意味着你不应该在高层模块中使用具体的低层模块。因为这样的话,高层模块变得紧耦合低层模块。
    如果明天,你改变了低层模块,那么高层模块也会被修改。根据DIP原则,高层模块应该依赖抽象(以抽象类或者接口的形式),低层模块也是如此。通过面向接口(抽象类)编程,紧耦合被移除。

    那么什么是高层模块,什么是低层模块呢?通常情况,我们会在一个类(高层模块)的内部实例化它依赖的对象(低层模块),这样势必造成两者的紧耦合,任何依赖对象的改变都将引起类的改变。

    相关文章

      网友评论

          本文标题:面向对象设计原则(SOLID)

          本文链接:https://www.haomeiwen.com/subject/ghpzwktx.html