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.单一职责原则:一个类只负责一项职责,不要因为变更二导致其他变更。