迪米特原则又称最少知识原则(least knowledge principle)简称LKP。意思是说一个对象应该对其他对象有尽可能少的了解。本篇播客参照了迪米特原则的百度百科,以及这篇播客 六大设计原则之迪米特原则。thanks a lot。
迪米特原则的一个解释是(talk only to your immediate friends)。只与直接朋友对话。什么是直接朋友呢。两个类有耦合就是朋友关系。直接朋友,我的理解是类之间是通过参数调用产生关系的,而不是直接内嵌的。下面的代码会进行解释:
例子同样来自 六大设计原则之迪米特原则这篇博客。
1 不遵从迪米特原则的例子
体育课上,体育老师要进行点名,她让体育课代表去点名。类Teacher与类 StudentList, Student, Representative都有耦合关系,但他们都是内嵌到类Teacher的command方法中。这就不符合迪米特原则了。代码如下
class Teacher(object):
def __init__(self):
pass
def command(self):
print('体育老师让课代表点名')
studentlist = StudentList()
for _ in range(20):
studentlist.append(Student())
print('课代表开始点名')