六大设计模式原则 之迪米特原则
迪米特原则又称为最少知识原则
一、定义
迪米特原则:指一个对象应该对于其他对象有最少的了解。
理解:简单来说一个类对自己所调用或者耦合的类有最少的了解,被调用的类内部实现与该类无关。
二、好处
可以有效的降低类之间的耦合度。
三、代码示例
我想大家都很熟悉,高三的时候因为课程紧张,尤其是一些所谓“学习狂人”(多为女生),经常以各种理由不上体育课,老师也不好说什么,只好每节课都认体育委员清点可以上课的人数,现在我们就来实现这一功能!
首先定义一个女生实体类,添加一个布尔指 判断是否可以上课
然后是体育委员类 用于判断该女生是否可以上课,并统计总量sum
再然后是老师类,实现叫体育委员清点人数的方法
最后是场景类
下面是结果:
报告老师,一共有12名女生无法参加体育课!
好,我们看看这段代码有问题吗?没有!有!
其实是有问题的,我们看老师这个类,他需要两个类来帮助实现,一个是女生,一个是体育委员,要叫体育委员清点人数,那么体育委员类不可少,但是女生呢,老师不需要自己去清点,那么为什么老师要耦合女生呢,这就有一些问题了;还有,在老师类中我们共调用了2个体育委员的方法,这使我们对于体育委员类的了解更多了,这样也不是我们这个原则所提倡的,所以这段代码可以进行优化:
首先还是女生类,没有变化,也不可能有变化
接着是体育委员类,我们将它的所有方法都设置为private的,只有一个方法设置为public的,用于老师的调用。
然后是老师类,现在老师类就干净了
最后还是场景类,我们将女生的初始化放在场景类中,由体育委员来寻找女生,这与老师无关
好了,我们运行一下:
报告老师,一共有12名女生无法参加体育课!
- 我们取消了老师对于女生的联系,降低了耦合度
- 我们减少了老师对于体育委员的了解,只调用了一个方法
- 整个设计更符合面向对象的设计