Python面向对象六大原则

Python面向对象六大原则

  • 开闭原则(终极目标)
  • 单一原则
  • 依赖倒置原则
  • 组合复用原则
  • 里式替换原则
  • 迪米特法则

六大原则:开闭原则、单一原则、依赖倒置原则、组合复用原则、里式替换原则、迪米特法则

开闭原则(终极目标)

开闭原则是代码编写的的终极目标,而面向对象的其他五个原则全部都是为开闭原则服务的,以开闭原则为基本目标,通过不同方法来降低耦合度。

“开”指的是允许一个类甚至往大了说允许一个系统随时可以对自己的功能进行拓展。
“闭”指的是不允许在扩展和修改功能的时候触及到已经写好的底层程序,所有这就要求在程序设计之初,尽可能考虑到一切需求,进行抽象类,形成底层程序,之后不能再进行修改。

比如电脑,底层程序硬件构成都是不变的,通过程序编写(新增功能)来扩展自己的功能,但是本质上电脑的构成程序、硬件,并没有发生变化。

单一原则

对于单一原则,其核心思想为:一个类,最好只做一件事,只有一个可以引起它变化的因素,如果一个类封装太多变化,就可能导致牵一发而动全身,这样对系统来说会有风险。

依赖倒置原则

具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。 我们知道,依赖一定会存在于类与类、模块与模块之间。当两个模块之间存在紧密的耦合关系时,最好的方法就是使用继承定义一个抽象的概念,使得高层的类调用抽象类,而底层类实现抽象的具象化,以此来有效控制耦合关系,达到依赖于抽象的设计目标。

组合复用原则

使用耦合度相对较低的关联方式替换耦合度最高的泛化方式

在面向编程中讲究高内聚,低耦合,这样的程序才是完美的程序。
继承只用作功能和数据的复用,以及同名功能的扩展,因为继承破坏了类的封装性,耦合度过高,类与类之间到底依赖性过高,灵活性较低,组合则恰恰相反,保证了类的封装性,降低了耦合度,灵活性高,但新功能的拓展实现没有继承方便。

里式替换原则

里式替换的主要思想就是只要父类可以被调用,子类就一定要代替父类被调用。这种情况并不是说父亲没有意义,相反的,里式替换进一步要求父类尽可能不要存在太具体的功能,能抽象就尽量抽象,任何的修改都完全依靠子类来补充和修改,从而进一步实现开闭原则。

迪米特法则

它的主要思想就是类与类之间尽可能不要有太多的关联,当一个类需要变化时,对其他类基本没有影响。

你可能感兴趣的:(学习)