接口隔离原则(Interface Segregation Principle, ISP)
客户端不应该被迫依赖它不需要的接口。应该把庞大的接口拆分成更小、更具体的接口。
# 反例:一个大而全的接口
class Worker:
def work(self):
pass
def eat(self):
pass
class Robot(Worker):
def work(self):
pass
def eat(self):
raise NotImplementedError("机器人不需要吃饭") # 被迫实现不需要的方法
# 正例:拆分接口
class Workable:
def work(self):
pass
class Eatable:
def eat(self):
pass
class HumanWorker(Workable, Eatable):
pass
class RobotWorker(Workable):
pass
相关笔记