SOLID 原则与 LKP
SOLID 是面向对象设计的五个基本原则的首字母缩写。这五个原则是:
单一职责原则(S)
单一职责原则(Single Responsibility Principle, SRP):一个类应该有且仅有一个功能或职责。功能被定义为引起类变化的原因。
如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。
把有不同的改变原因的事物耦合在一起的设计是糟糕的;将其分离开来,使得每个类或模块只有一个改变的理由,能够使得各个功能更加独立,更容易维护。
代码示例
class Door:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def paint(self, color):
return f'Painting the door in {color}'
def install(self):
return 'Installing the door'
在上面的代码中,Door
类有三个职责:计算门的面积、涂 漆和安装。这违反了单一职责原则。为了遵守这个原则,我们可以将这三个职责分别放在三个不同的类 Door
, DoorPainter
和 DoorInstaller
中。
提示
一个通俗的判断方式就是问自己:
类的某个方法是否是这个类的所能做的事?
如果不是,那么这个方法应该被移到另一个类中。
开闭原则(O)
开闭原则(Open/Closed Principle, OCP):一个类应该对扩展开放,对修改关闭。
开闭原则鼓励利用继承和多态来实现代码的可扩展性。这样,当需要添加新功能时,不需要修改现有代码,而是通过添加新的代码来实现。
与之相反的是,开闭原则反对直接修改现有代码来添加新功能。这样做可能会导致不可预测的副作用,甚至破坏现有功能。