当前位置: 首页 > 后端技术 > Python

Python类创建原则

时间:2023-03-26 13:24:22 Python

单一原则概念:一个类不能因为多个原因而改变,即一个类只有一个职责。如果责任太多,代码就会臃肿,可读性差,更难维护。事实上,单一职责原则与接口隔离原则有一定的关系。接口隔离后,职责单一,实现这个接口的类的职责自然也就单一了。但接口隔离侧重于抽象层,单一职责侧重于两者,侧重于实现。然而,在现实中,我们的代码很难实现一个单一的原则。而且,每个人对类定义的理解都会有一定的差异。比如:通话功能是否需要在一个类中定义拨号、通话、结束通话?还是我们都单独定义类来实现不用的方法。django中也有实现增删改查的类接口,那为什么不单独定义呢,这不符合我们单一的原则吗?所以,我们在实现接口的时候,一定要尽量简单,但是涉及到类的时候,就要根据实际情况来定。对数据库的操作一般都是增删改查,所以我们没有必要分开。那么单一原则有什么好处呢?1.提高类的可维护性和可读性。一个类的职责更少,复杂度更低,代码更少,可读性更好,自然可维护性更高。2.提高系统的可维护性系统由类组成,每个类的可维护性高,相对来说整个系统的可维护性高。当然,前提是系统架构没有问题。3.降低变更风险一个类的职责越多,变更的可能性就越大,变更的风险也越大。如何贯彻单一原则?简单的说,一个类只完成一个功能。替换原则的概念:子类可以扩展父类的功能,但不能改变父类原有的功能。如果一个基类对象在软件中被其子类对象替换,程序将不会产生任何错误和异常,反之亦然。如果软件实体使用子类对象,它可能无法使用基类对象。类是可以继承的。子类继承父类时,会继承父类的所有属性和方法。我们的子类不修改父类原有的功能。然后我们在一定的条件下使用父类,然后用父类改成子类。我们的程序没有错误。里氏代换原则所包含的含义1、子类可以实现父类的抽象方法,但不能重写父类的非抽象方法。我们在做系统设计的时候,往往设计接口或者抽象类,然后子类实现抽象。这里使用的方法其实就是里氏代换原则。很容易理解,子类可以实现父类的抽象方法。实际上,子类也必须完整实现父类的抽象方法,即使写的是空方法,否则编译时也会报错。Liskov替换原则的关键点是父类的非抽象方法不能被重写。所有在父类中实现的方法,实际上都是在设定一系列的规范和契约。虽然它并没有强制所有的子类都遵守这些规范,但是如果子类任意修改这些非抽象方法,就会对整个继承体系造成破坏。Liskov替换原则表达了这个意思。2.子类可以添加自己特有的方法。每个子类在继承父类的属性和方法的同时,也可以有自己的个性,在父类的基础上扩展自己的功能。前面说过,在扩展功能的时候,子类尽量不要重写父类的方法,而是另外写一个方法3.子类重写或者实现父类的方法时,方法的前置条件(即就是,方法的形参)比父类方法的入参宽松。简单的说就是:子类可以继承父类,但是我们不能修改父类和原有的功能。我们只能使用它,扩展父类的方法。依赖倒置原则定义:1.上层模块不应该依赖下层模块,它们都应该依赖抽象。2.抽象不应该依赖于细节,细节应该依赖于抽象。比如一个汽车厂,一开始可以生产大众和奥迪。然后大众和奥迪都依赖我们的车厂。后期如果厂子做大了,生产其他车,那其他车也会依赖我们车厂。我们的车是底层模块,车厂是上层模块。也就是说,你可以不用我,只要你用了我,就是符合我的规矩。迪米特定律的概念:一个对象对其他对象的了解应该是最少的,所以迪米特定律也被称为最少知识原则。迪米特定律的意义在于降低类之间的耦合。由于每个对象都最大限度地减少了对其他对象的理解,因此很容易使系统的功能模块相互独立,它们之间没有(或很少)依赖。例如,电脑内部有主板、cpu、内存、硬盘等。还有外设键盘,鼠标,显示器等等。那么我们要生产一台电脑,那么需要加工吗?五颜六色的主板需要知道IntelCPU是怎么生产的吗?他们只需要知道界面。开闭原则的概念:开闭原则就是对扩展开放,对修改关闭。当程序需要扩展时,不能修改原有代码,达到热插拔的效果。简单来说:就是让程序具有可扩展性,便于维护和升级。降低耦合1、只要是面向对象编程,在开发过程中都会强调开闭原则。2.是最基本的设计原则。其他五项设计原则是开闭原则的具体表现形式。3.可以提高代码的复杂度。可用性4.可以提高代码的可维护性