1.开闭原则:指的是如果对类、函数等要添加新的功能时,原有的代码尽量不修改。因为此时系统已经成型,修改某个函数或类,可能会导致其他引用的地方工作异常。
2.替换原则:一个地方引用了某个父类,则要求这个地方也能正常地引用父类的子类。
3.依赖原则:高层的代码和底层的代码,要针对某个接口来编程,这样不管底层如何添加新功能,都是按照接口的样子写的,高层能正常的调用。 https://www.cnblogs.com/ZhenghuiLyu/p/15101358.html
4.接口隔离原则:使用多个专门的接口,而不是使用定义的总接口。例如下面的Tiger类:
class Animal(metaclass=ABCMeta): def fly(self): pass def walk(self): pass def swim(self): pass class Tiger(Animal): def fly(self): #此时老虎类,要实现抽象类中fly方法,显然是不合理的 pass def walk(self): pass def swim(self): pass
这就要求拆分Animal类:
#将原Animal类,细分为多个种类动物类 class LandAnimal(metaclass=ABCMeta): def walk(self): pass class SkyAnimal(metaclass=ABCMeta): def fly(self): pass class WaterAnimal(metaclass=ABCMeta): def swim(self): pass class Tiger(LandAnimal): def walk(self): #老虎只会走 假设不会游泳 pass class Forg(LandAnimal,WaterAnimal): #青蛙类,多继承了陆生动物和水生动物 def walk(self): pass def swim(self): pass class Swan(SkyAnimal,WaterAnimal,LandAnimal): #天鹅类,多继承了飞翔动物、陆生动物及水生动物 def fly(self): pass def walk(self): pass def swim(self): pass
拆分后的Animal类,就合理了。
5.单一职责原则:一个类只负责一项职责,不要因为变更二导致其他变更。